1
這裏以不同的名字出現兩種常見的列是兩個表中各表的例子:加入基於各表中的
客戶
╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc ║ xex ║
║ def ║ tet ║
╚══════════╩════════════╝
隊
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║ 44 ║ xex ║
║ 32 ║ tet ║
╚════════╩════════════╝
動作
╔════╦════════════╗
║ ID ║ STATE ║
╠════╬════════════╣
║ 44 ║ complete ║
║ 58 ║ incomplete ║
╚════╩════════════╝
注意act_id
表teams
也存在於表actions
作爲id
我要選擇有兩列的表:group_id
和group_name
,其中每個group_name
具有帶有完整的act_id
state
。
我做這樣的事情:
SELECT group_id AND group_name
FROM clients
WHERE group_name IN (SELECT group_name
FROM teams, actions
WHERE teams.act_id = actions.id
AND actions.state IS complete)
這是正確的?
我也想到了什麼樣
SELECT group_id AND group_name
FROM clients
WHERE group_name IN (SELECT group_name
FROM teams
WHERE act_id IN (SELECT id
FROM actions
WHERE teams.act_id = actions.id.
AND state IS complete))
或者是上述的正確嗎?
我希望得到的表顯然是這一個:
╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc ║ xex ║
╚══════════╩════════════╝
非常感謝你回答JW。您正在使用的a,b和c只是您分配給每個表的隨機名稱,以便您可以輕鬆識別它們並在查詢中區分它們。你也可以給我上面的查詢使用我自己更詳細的格式(沒有JOINS只是通過使用WHERE,IN,IS,IS NOT,=),以便我可以更好地理解你在做什麼?或者沒有JOIN,這是不可能的?再次感謝,我一定會看JOINs。 –
'a,b,c'被稱爲'ALIAS'(*或暱稱*)。有很多可能的查詢來達到特定的結果。我最喜歡的是使用'JOIN'。這也可以使用'EXISTS'完成。 ')' –