Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: korelacja miedzy kilkoma tabelami
Forum PHP.pl > Forum > Bazy danych > MySQL
agamemnon
Witam Prosze o podanie nazwy funkcji badz struktury takiego zapytania otoz mam trzy tabele (nie mam wplywu na ich konstrukcje).
1 Tabela - Zamowienie (gdzie znajduja sie dane klienta - a co najwazniesze to ID_zamowienia i Sid)
2 Tabela - Zamowione produkty ( tutaj jest ID_produktu i ten sam Sid co w 1 Tabeli)
3 Tabela - Produkty (tutaj jest ID-produktu ten sam co w tabeli 2 i jego Name - czyli jego pelna nazwa)

Znalazlem taki artykul http://php.koderzy.pl/porady15/Jak_wybra%E..._z_drugiej?.php

Chodzi teraz o to by zapytanie wczytalo dwa rekordy z Tabeli 1 (ID_zamowienia i Sid). Z tabeli 2 wczytalo tylko te rekordy ktore maja takie sama Sid (jak w tabeli 1). Z tabeli 3 wybralo tylko "Name"w tych rekordach ktore maja taki ID_produktu. Mam nadzieje ze jest to choc troche zrozumiale:>
Pozdrawiam i dziekuje za pomoc
dr_bonzo
  1. SELECT z.ID_zamowienia, z.Sid, p.Name FROM Zamowienie AS z JOIN Zamowione_produkty AS zp ON z.Sid = zp.Sid JOIN Produkty AS p ON zp.ID_produktu = p.ID_produktu WHERE ID_zamowienia = 1

wypisze ci ID i Sid zamowienia i nazwy produktow dla zamowienia nr 1.

aaa , chodzilo o sama nazwe : ) no to 'JOIN' -- zlaczenia smile.gif
agamemnon
Ogromnie Ci dziekuję za podpowiedź za rozwiązanie. Niestety napotykam takowy błąd:

  1. Column 'ID' in where clause is ambiguous


zeby ujednolicic wszsytko podaje dokladne nazwy pol gdyz tamte byly stworzone na potrzeby wytlumaczenia:

1. Tabela "orders" gdzie jest numer zamowienia "ID" oraz numer "Sid"
2. Tabela "order_finish" gdzie jest "Sid" (ten sam co w orders) oraz "IDitem" czyli numer produktu
3. Tabela "store" gdzie jest "IDitem" oraz jego nazwa "Name"

  1. SELECT z.ID, z.Sid, p.Name FROM orders AS z JOIN order_finish AS zp ON z.Sid = zp.Sid JOIN store AS p ON zp.IDitem = p.IDitem WHERE ID = 1


Analogicznie do podnaego przykladu wyrzej sporzadzilem zapytanie ale niestety jak juz mowilem pojawia sie blad. Czy moglby mi ktos pomoc i powiedziec dlaczego?
Norbas
Dopisz 'z.' przed końcowym ID, czyli:
  1. ... WHERE z.ID=1
dr_bonzo
Rozwiazanie masz powyzej, a przyczyna to niejednoznacznosc nazwy kolumny 'ID' -- masz kilka takich kolumn w tabelach ktorych uzywasz w tym zapytaniu. Poprzedzenie nazwy kolumny nazwa tabeli wszystko wyjasnia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.