złączenie tabel

0

Witam,
miałem problem z napisaniem zapytania SQL na złączonych tabelach, który rozwiązałem mało elegancko a mianowicie wykonując 2 zapytania proste.Napisałem skrypt sklepu internetowego w PHP/MySQL, problem pojawił się w panelu administracyjnym w dziale zamówienia.
Dane z zamówień wyciągane są z 2 tabel: elementy_zamowienia i produkty.

| Elementy zamówienia |
| id_elem | id_zam | id_prod | ilosc |

gdzie:
id_elem to kolejny nr produktu w koszyku,
id_zam grupuje zamówienia unikalnego klienta,
ilosc oznacza liczbę zamówionych produktów o id id_prod.

| produkty |
| id_prod | nazwa | opis | cena | ilosc | id_kat |

gdzie:
ilosc oznacza liczbę sztuk danego produktu na magazynie.

Chciałem w menu Zamówienia PA wylistować wszystkie zamówienia, żeby wyglądało to tak:

klient | nazwa produktu | ilosc zakupionych sztuk | suma

Napisałem zapytanie SQL:
SELECT * FROM elementy_zamowieniaez JOINprodukty p ON ez.id_prod=p.id_prod WHERE id_zam='$id'

i jak wypisuję $row['ilosc']

to wypisuje mi ilość sztuk produktu na magazynie, a nie ilość sztuk w zamówieniu.

Próbowałem jeszcze zmodyfikować zapytanie, przez wybranie tylko niektórych kolumn z tabeli produkty, a mianowicie id_prod, nazwa, cena używając klauzuli USING ...
... JOIN produkty USING('id_prod','nazwa','cena') ...

ale zapytanie pokazuje błąd.

Możecie coś na to poradzić?

Z góry dziękuje za odpowiedzi, pozdrawiam

0

Pierwsza rada - nie są ci potrzebne wszystkie kolumny, więc nie pobieraj wszystkich za pomocą *, bo wtedy właśnie masz taką sytuację. Nie znam dobrze MySQL-a, ale myślę, że skoro dwa pola tak samo się nazywają to z automatu jedno dostanie inną nazwę.
Druga rzecz, to jeśli ci się poale nie pokazuje, to wymuś to przez aliasowanie go, czyli ... ez.ilosc as ilosc_na_zamowieniu

pozdrawiaMM

0

Nazwy pól nie mają znaczenia bo i tak używa "prefiksów" (ez, p)

Może przy klauzuli WHERE użyj ez.id_zam

0

A nie lepiej zapytanie zrobić w ten sposób ?

SELECT EZ.ilosc
FROM elementy_zamowienia EZ, produkty P
WHERE EZ.id_prod=P.id_prod AND EZ.id_zam = '$id'
GROUPBY EZ.ilosc

Nie gwarantuje czy zapytanie nie zawiera błędów :-)

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