Zapytanie SQL - łączenie tabel jak to ugryść?

Odpowiedz Nowy wątek
2014-03-12 19:05
0

Mam pewien problem z wynikami otrzymanymi w takim zapytaniu:

SELECT M.p_id ,M.p_kod ,M.p_kodd ,M.p_pieces_in_delivery ,M.p_pieces_in_magazine ,D.ps_name ,D.ps_comment ,SUM(P.pm_pieces_in_sold) pm_pieces_in_sold FROM Tab_Product AS M INNER JOIN Tab_Product_Details AS D USING (p_details) INNER JOIN tab_product_magazine AS P USING (p_id) WHERE p_delivery = 1 GROUP BY P.p_id

W Tabeli Tab_Product jest lista produktów a w Tabeli tab_product_magazine są zawarte informacje gdzie dany produkt znajduje się fizycznie na magazynie/regale

Dane z tego zapytania otrzymuje poprawnie tylko z jednym ale które nie wiem jak ugryść.

Jeżeli dany produkt o indeksie p_id nie jest nigdzie umiejscowiony na regale/magazynie czyli nie występuje w tab_product_magazine To taki rekord z oczywistych powodów nie jest wyświetlany.

Pytanie brzmi. Jak napisać instrukcję aby były pokazywane także takie rekordy?

Pozostało 580 znaków

2014-03-12 19:10

LEFT JOIN tab_product_magazine zamiast INNER JOIN tab_product_magazine :)

Pozostało 580 znaków

2014-03-12 20:32
0

Dzięki za odpowiedź bo coś "drgnęło" tzn odczytuje to co moje zapytanie + pierwszy rekord którego NIE MA w tab_product_magazine ale jeśli w tabeli Tab_product jest więcej produktów których NIE MA w tab_product_magazine to i tak wyświetla tylko pierwszy napotkany

Jeśli usunę SUM i GROUP BY to rekordy są poprawnie wyświetlane - tutaj tkwi problem. Co nie zmienia faktu że przydała by mi się jakaś wasza podpowiedź :) - Rafał D 2014-03-12 20:37
Zamiast GROUP BY P.p_id ----musi być--> GROUP BY M.p_id - Rafał D 2014-03-12 21:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0