簡體   English   中英

SQL查詢使用if條件或CASE聯接4個表

[英]Sql Query to join 4 tables using if condition or CASE

我有4張桌子聊天。

表1 (主注釋表,表2中考慮了表1的用戶)


ID

評論


表2 (在表1中添加新注釋時,表2也將使用注釋者的user_id更新)


comment_id(表1的引用)

用戶身份


表3 (做了一些其他工作,但通過comment_id與表1相關)


ID

column_related_to_table-3

comment_id

用戶身份


表4 (做了一些其他工作,但通過comment_id與表1相關)


ID

column_related_to_table-4

comment_id

用戶身份


現在,我想從所有表(Table-2,Table-3,Table-4)中獲取comment_id,最后,如果其中一個表中存在特定用戶,則使用Table-1中的comment_id獲得注釋。

SELECT A.id,A.comment,
FROM Table-1 A  
LEFT JOIN Table-2 B 
ON B.comment_id = A.id
LEFT JOIN Table-3 C 
ON C.comment_id = A.id OR C.user_id = {$current_user}
LEFT JOIN Table-4 D
ON D.comment_id = A.id OR D.user_id = {$current_user}
WHERE  B.`user` = {$current_user}
GROUP BY A.`id`
ORDER BY A.`id` DESC
LIMIT 7 OFFSET 0

我也嘗試了3張桌子的聯合

Select A.id AS cid
FROM Table-1 A
LEFT JOIN Table-2 B
ON B.comment_id = A.id
WHERE B.user_id = {$current_user}
UNION
Select C.comment_id AS cid
FROM Table-3 C
WHERE C.user_id = {$current_user}
UNION
Select D.comment_id AS cid
FROM Table-4 D
WHERE D.user_id = {$current_user} 

但是在這里我不知道如何使“按id ,按id DESC LIMIT 7 OFFSET 0”工作,也不知道如何使用ID從表1中獲取注釋。聯盟。

在此處輸入圖片說明

在此處輸入圖片說明

表1(活動)表2(注釋)表2(注釋)ID作為數據ID連接到表1(活動)。 我在表1中鏈接表2(以了解時間和評論的用戶等)。

表3(聊天)這里的概念就像一個注釋可以具有由聊天代表的線程。 它將始終與評論相關。 在此處輸入圖片說明

表4(chat_followers)這里可以對其他用戶執行ping操作,因此在聊天中被ping的所有用戶都將在此處 在此處輸入圖片說明

最后的想法是,如果他已經寫了該用戶的評論,或者已經在聊天室中回復了該用戶的所有評論(評論的主題),或者如果他被其他任何人ping通,那么該想法將得到“用戶的所有評論”。

由於除了表2、3、4中的注釋ID之外,您不想要任何數據,因此為什么不使用簡單的IN子句?

SELECT * 
FROM Table1 A
WHERE A.id IN 
(SELECT Comment_Id FROM Table2 WHERE.... UNION ALL 
SELECT Comment_ID FROM Table3 WHERE... UNION ALL 
SELECT Comment_Id FROM Table4 WHERE...)
GROUP BY A.`id`
ORDER BY A.`id` DESC
LIMIT 7 OFFSET 0

如果您確實想使用其他表中的其他列,則可以通過LEFT OUTER JOIN來使用:

SELECT A.id,A.comment
FROM 
    Table-1 A  LEFT JOIN 
    Table-2 B ON B.comment_id = A.id AND B.User = currentUserId LEFT JOIN 
    Table-3 C ON C.comment_id = A.id AND C.User = currentUserId LEFT JOIN 
    Table-4 D ON D.comment_id = A.id AND D.User = currentUserId
WHERE  B.id IS NOT NULL OR C.id IS NOT NULL OR D.id IS NOT NULL
GROUP BY A.`id`
ORDER BY A.`id` DESC
LIMIT 7 OFFSET 0

暫無
暫無

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

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