Je veux choisir parmi deux tables (clients, machines) qui sont liées les unes aux autres via la troisième table (commands), mais la table a a une key primaire composite
Les clients de table ont une key primaire
id
Les machines de table ont une key primaire composite avec ces deux colonnes:
machinId machineModel
Et ces deux sont liés à des commands de table
Id(fk) machine(fk) machintype
Je veux sélectionner parmi les clients et les machines toutes les machines qu'une personne a achetées (commands)
Ma command select est
Select c.name, c.land, m.namemachin from orders o inner join customers c on c.id = o.id inner join machins m on o.machine = m.Id where c.name = 'karl' and m.machine = o.machintype
Mais ça ne marche pas
Pouvez-vous m'aider s'il vous plaît?
Si vous avez une key primaire composite dans les machins
table, les deux colonnes de cette colonne doivent être disponibles dans les orders
table pour une relation correcte. Alors seulement vous pouvez faire une jointure appropriée à ces tables pour une requête de sélection.
Selon la discussion m.machineModel = o.machintype
Alors, essayez cette requête
Select c.name, c.land, m.namemachin from orders o inner join customers c on c.id = o.id inner join machins m on m.machinId = o.machine and m.machineModel = o.machintype where c.name = 'karl'
Si votre récupération est liée à la concaténation de strings, c'est-à-dire get toutes les machines sous forme de string. Je pense que vous pouvez utiliser STUFF et FOR XML PATH.
Ou bien passez par le lien ci-dessous cela pourrait aider http://www.w3resource.com/sql/joins/using-a-where-cluase-to-join-two-tables-related-by-a-composite-primary- key-or-foriegn-key-pair.php