簡體   English   中英

在不同關系上加入同一張桌子

[英]joining same table on different relations

我有3張桌子。 用戶,對象和項目。 用戶可以有許多對象,而對象可以有許多項目。 此外,用戶可以有許多項目。 我正在為這些表做報告。

我的結果應如下所示:

+------------+----------------+-----------------+
| username   | Object         | Item            |
+------------+----------------+-----------------+
|  1001      | Object_name1   | Item_name1      |
|  1001      | NULL           | Item_name2      |
|  1001      | NULL           | Item_name3      |
|  1001      | NULL           | Item_name4      |
|  1001      | NULL           | Item_name5      |
|  1002      | NULL           | Item_name6      |
+------------+----------------+-----------------+
and so on..

我目前查詢得到的最好的結果是:

SELECT u.username, o.name as object, i.name as item, i1.name as item_1
FROM users as u
LEFT JOIN object_user as ou on ou.user_id = u.id
LEFT JOIN objects as o on o.id = ou.object_id
LEFT JOIN object_items as oi on oi.object_id = o.id
LEFT JOIN items as i on i.id = oi.item_id
LEFT JOIN item_user as iu on iu.user_id = u.id
LEFT JOIN items as i1 on i1 = iu.item_id
+------------+----------------+-----------------+-----------------+
| username   | Object         | Item            | Item_1          |
+------------+----------------+-----------------+-----------------+
|  1001      | Object_name1   | Item_name1      | Item_name2      |
|  1001      | Object_name1   | Item_name1      | Item_name3      |
|  1001      | Object_name1   | Item_name1      | Item_name4      |
|  1001      | Object_name1   | Item_name1      | Item_name5      |
|  1002      | NULL           | NULL            | Item_name6      |
+------------+----------------+-----------------+-----------------+

我的架構: 在此處輸入圖片說明 如您所見,這是不正確的。 有什么建議怎么解決呢?

您可以對項目使用兩次連接,一次用於對象相關的項目,另一次用於用戶實現的項目

SELECT u.username, o.name as object, oi.name as oi_item_name, ui.name as ui_item_name
FROM users u
LEFT JOIN objects o on o.id = u.object_id 
LEFT JOIN items  oi on o.item_id  = oi.id
LEFT JOIN items ui on u.item_id  = ui.id 

暫無
暫無

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

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