Mam trzy tabele, z których 2 to zwykłe tabele danych, a 1 to wiele do wielu tabel skrzyżowań.Łączenie SQL na stole skrzyżowań z wieloma do wielu relacji
Tabele dwóch danych:
table products
product_id | product_name | product_color
-----------------------------------------
1 | Pear | Green
2 | Apple | Red
3 | Banana | Yellow
i
table shops
shop_id | shop_location
--------------------------
1 | Foo street
2 | Bar alley
3 | Fitz lane
Mam tabeli połączeniową, która zawiera tych i product_id
's shop_id
:
table shops_products
shop_id | product_id
--------------------
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
3 | 2
3 | 3
chcę wybierz dane z produktów, które są w sklepie z shop_id 3. Próbowałem wielu przykładów Jestem tutaj z połączeniami, lewymi złączami, wewnętrznymi złączami, ale po prostu nie wiem, co tu robię i co jest nie tak. Zapytanie miałem, ale właśnie wrócił wszystkie produkty niezależnie od tego czy są one w określonym sklepie jest następujący:
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
oczekiwany wynik jest następujący:
product_name | product_color
----------------------------
Apple | Red
Banana | Yellow
Jest w MySQL, dziękuję dla jakiejkolwiek pomocy, naprawdę to doceniam.
Co za miła odpowiedź! –
Dziękujemy! To rozwiązało mój problem i pomogło mi zrozumieć rozwiązanie. Jeszcze raz dziękuję, przyjmuję to za 5 minut, kiedy mi pozwoli :) –