[英]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.