MySQL JOIN - nie umiem zapytać o to czego chcę ;)
: 04 sie 2010, 14:38
Mam mniej więcej takie tabele:
languages
------------
| id | name |
------------
| 1 | Polski |
| 2 | English|
| 3 |Deutsch|
-------------
shipping_names
|-------------------------------------|
| id | shipping_id | name | language_id |
---------------------------------------
| 1 | 1 | bla | 1 |
| 2 | 1 | wlw | 2 |
| 3 | 2 | agag | 3 |
---------------------------------------
Chcę utworzyć zapytanie, które zawsze zwróci tyle wierszy ile ma tabela languages w zależności od shipping_id w tabeli shipping_names. Czyli przykładowo dla shipping_id=1 potrzebuję to:
|--------------------------------------------|
| id | name | shipping_id | name | language_id |
----------------------------------------------
| 1 | Polski | 1 | bla | 1 |
| 2 | English| 1 | wlw | 2 |
| 3 |Deutsch| null | null | null |
-----------------------------------------------
Próbowałem z zapytaniem w stylu:
Problem polega na tym, że nie zwraca to oczekiwanego przeze mnie wyniku. Dostaję powyższą tabelę bez ostatniego wiersza, gdyż dla deutscha jest już wpis w tabeli shipping_names dla innego shipping_id. Gdyby go usunąć wszystko działa prawidłowo.
Proszę o pomoc w odpowiednim sformułowaniu zapytania
pozdrawiam!
languages
------------
| id | name |
------------
| 1 | Polski |
| 2 | English|
| 3 |Deutsch|
-------------
shipping_names
|-------------------------------------|
| id | shipping_id | name | language_id |
---------------------------------------
| 1 | 1 | bla | 1 |
| 2 | 1 | wlw | 2 |
| 3 | 2 | agag | 3 |
---------------------------------------
Chcę utworzyć zapytanie, które zawsze zwróci tyle wierszy ile ma tabela languages w zależności od shipping_id w tabeli shipping_names. Czyli przykładowo dla shipping_id=1 potrzebuję to:
|--------------------------------------------|
| id | name | shipping_id | name | language_id |
----------------------------------------------
| 1 | Polski | 1 | bla | 1 |
| 2 | English| 1 | wlw | 2 |
| 3 |Deutsch| null | null | null |
-----------------------------------------------
Próbowałem z zapytaniem w stylu:
Kod: Zaznacz cały
SELECT l.id AS lid, l.name AS lname, s.* FROM languages l LEFT JOIN shipping_names s ON l.id=s.language_id WHERE s.shipping_id IS NULL OR s.shipping_id=1
Proszę o pomoc w odpowiednim sformułowaniu zapytania

pozdrawiam!