Ho tre tabelle, di cui 2 sono tabelle di dati regolari e 1 è una tabella di giunzione molti a molti.SQL join sulla tabella di congiunzione con molti a molti rapporti
Le tabelle di dati due:
table products
product_id | product_name | product_color
-----------------------------------------
1 | Pear | Green
2 | Apple | Red
3 | Banana | Yellow
e
table shops
shop_id | shop_location
--------------------------
1 | Foo street
2 | Bar alley
3 | Fitz lane
Ho una tabella di giunzione che contiene i shop_id
's e product_id
' s:
table shops_products
shop_id | product_id
--------------------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 2
3 | 3
voglio seleziona i dati dai prodotti che sono in negozio con shop_id 3. Ho provato molti esempi per m qui con join, left join, inner join, ma non so cosa sto facendo qui e cosa sta andando male. La query che ho avuto, ma appena tornato tutti i prodotti, indipendentemente se sono nel negozio indicato è il seguente:
SELECT products.product_name, products.product_color
FROM products
LEFT OUTER JOIN shops_products
ON products.product_id = shops_products.product_id
AND shops_products.shop_id = 3
LEFT OUTER JOIN shops
ON shops_products.shop_id = shops.shop_id
Il risultato atteso è la seguente:
product_name | product_color
----------------------------
Apple | Red
Banana | Yellow
Questo è in MySQL, grazie per qualsiasi aiuto, lo apprezzo davvero.
Che bella risposta! –
Grazie! Questo ha risolto il mio problema e mi ha aiutato a capire la soluzione. Grazie ancora, lo accetterò in 5 minuti quando mi permetterà :) –