Je les tableaux ci-dessous (colonnes non liées à l'écart):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
Je "studios" et "équipements". Un studio appartient à un utilisateur. L'équipement peut être affecté aux studios (table studio_equipment). Un équipement peut être assigné plusieurs fois à un studio mais il peut aussi y avoir des studios qui n'ont pas encore d'équipement. Je veux récupérer tous les studios pour un certain utilisateur avec tout l'équipement possible qui pourrait être assigné à ces studios. Si un équipement a déjà été assigné à un studio, montrez-le également.
Pour l'exemple ci-dessus cela signifierait la suivante (pour 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
Ceci est mon instruction SQL jusqu'ici:
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'
Mais cela ne récupère pas toutes les données i vouloir. Par exemple, le studio 2 est récupéré mais pas associé à tout l'équipement possible.
Merci d'avance pour votre aide!
Voici l'information dont vous avez besoin: http://stackoverflow.com/questions/219716/what-are-the-uses-for-cross-join – dcaswell