[英]MySQL join 3 tables, with multiple columns excluding results from one table
[英]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
表等於數 TABLE1
或TABLE2
或TABLE3
,顯示文本-唯一部分。
我試過了:
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.