簡體   English   中英

SQL n:m關系

[英]SQL n:m relation

我有下表(省略了不相關的列):

studios:
id | user_id
 1 |       1
 2 |       1

equipment:
id
 1
 2

studio_equipment:
id | studio_id | equipment_id
 1 |         1 |            1
 2 |         1 |            1

我有“工作室”和“設備”。 工作室屬於用戶。 可以將設備分配給工作室(studio_equipment表)。 可以將設備多次分配給工作室,但也可以有尚無設備的工作室。

我想檢索某個用戶的所有工作室以及可以分配給這些工作室的所有可能的設備。 如果已經將設備分配給工作室,則也要顯示此設備。

對於上面的示例,這意味着以下內容(對於user_id 1):

desired results:
studio.id | equipment.id | studio_equipment.id
        1 |            1 |                   1
        1 |            1 |                   2
        1 |            2 |                null
        2 |            1 |                null
        2 |            2 |                null

到目前為止,這是我的SQL語句:

SELECT `s`.*, `e`.*, `se`.*
FROM (`studios` AS s)
LEFT JOIN `studio_equipment` AS se ON `s`.`id`=`se`.`studio_id`
LEFT OUTER JOIN `equipment` AS e ON `se`.`equipment_id`=`e`.`id`
WHERE `s`.`user_id` =  '1'

但這不會檢索我想要的所有數據。 例如,示例工作室2被檢索但未與所有可能的設備配對。

在此先感謝您的幫助!

SELECT 
    s.id  AS studio_id, 
    e.id  AS equipment_id, 
    se.id AS studio_equipment_id
FROM 
     studios AS s
  CROSS JOIN 
     equipment AS e
  LEFT JOIN 
     studio_equipment AS se 
       ON  se.studio_id = s.id
       AND se.equipment_id = e.id ;

暫無
暫無

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

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