簡體   English   中英

MySQL加入一個表與多個表

[英]Mysql JOIN one table with multiple tables

我有4張桌子:

ADS :ID,文字, 數字

TABLE2 :id,user_id, 數字
TABLE3 :id,user_id, 數字
TABLE4 :id,user_id, 數字

user_id不是唯一的。 可以存在與否。

我想要的輸出:
如果 ADS表等於 TABLE1TABLE2TABLE3 ,顯示文本-唯一部分。

我試過了:

SELECT ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 
GROUP BY ADS.id 

SELECT * FROM 
(
SELECT 
ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 

UNION ALL

SELECT 
ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 
) request 
ORDER BY ADS.id

$reponse->execute(array($_SESSION['id'],$_SESSION['id'],$_SESSION['id']));

我總是輸出過多或不足...

這是您想要的嗎?

SELECT ADS.text
FROM ADS a
WHERE EXISTS (SELECT 1 FROM TABLE2 t WHERE t.user_id = ? AND t.number = a.number) OR
      EXISTS (SELECT 1 FROM TABLE3 t WHERE t.user_id = ? AND t.number = a.number) OR
      EXISTS (SELECT 1 FROM TABLE4 t WHERE t.user_id = ? AND t.number = a.number);

暫無
暫無

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

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