簡體   English   中英

顯示結果不在連接表中

[英]Show Results not in joining table

我有三張表:

  1. 孩子們
  2. 活動
  3. 注冊活動

表“兒童”包含兒童的詳細信息。

表“活動”包含活動的詳細信息。

當一個孩子注冊一個活動時,一個帶有activityID 和childID 的條目被添加到表中。 我正在嘗試獲取尚未報名參加活動的兒童名單。 我嘗試了以下查詢,但出現錯誤:

“不是唯一的表/別名:‘兒童’”

SELECT children.childrenEmailAddress
FROM children 
    INNER JOIN activities ON signupActivity.SignupActivityID = activities.activityID
    INNER JOIN children ON signupActivity.signupActivitychildID = children.childrenID
LEFT JOIN signupActivity ON children.childrenID = signupActivity.signupActivitychildID
WHERE activities.activityID = 8

記錄集還需要包含基於加入表 Children 和 Activity 中的“部分”的結果。 children.childrenSection = activity.activitySection 以及通過 activity.activityID 過濾記錄集

這是我改編自 Arth 的決賽:

 SELECT c.childrenEmailAddress
     FROM children c
     JOIN activities a
       ON a.activitySection = c.childrenSection
        AND a.activityID = 8
LEFT JOIN signupActivity sa 
       ON sa.signupActivitychildID = c.childrenID
    WHERE sa.signupActivitychildID IS NULL
SELECT
    *
FROM
    Childeren C1
WHERE
    NOT EXISTS (SELECT *
        FROM
           signupActivity S1
        WHERE
           S1.activityID= 8 AND
           C1.ChildID= S1.ChildID)

我會使用LEFT JOINNULL檢查

   SELECT c.childrenEmailAddress
     FROM children c
LEFT JOIN signupActivity sa 
       ON sa.signupActivitychildID = c.childrenID
      AND sa.SignupActivityID = 8
    WHERE sa.signupActivitychildID IS NULL

就我個人而言,我不喜歡在每個列名中重復表名。我覺得使用它是不必要的並且令人沮喪。 您的查詢可能很簡單:

   SELECT c.emailAddress
     FROM child c
LEFT JOIN signupActivity sa 
       ON sa.childId = c.id 
      AND sa.activityID = 8
    WHERE sa.childId IS NULL 

更新

   SELECT c.childrenEmailAddress
     FROM children c
     JOIN activities a
       ON a.activitySection = c.childrenSection
      AND a.activityID = 8
LEFT JOIN signupActivity sa 
       ON sa.signupActivitychildID = c.childrenID
      AND sa.signupActivityactivityID = a.activityID
    WHERE sa.signupActivitychildID IS NULL
SELECT *
FROM `children` c
WHERE c.childID NOT IN(
SELECT `childID`
FROM `activities`);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM