Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]blad w zapytaniu sql dotyczące złaczenia kolumn...
Forum PHP.pl > Forum > Przedszkole
piotrino1
Witam, mam problem z zapytaniem sql jesli chodzi o zlaczenia kolumn. Jesli chcę złączyć kolumny z dwóch tabel to problemu nie mam, ale jesli chcę złączyc kolumny np. z trzech tabel to pokazuje mi się błąd. Czy jest możliwość złączenia kolumn z trzech, lub wiecej tabel???Jesli tak to prosiłbym o przykład zapytania sql?questionmark.gif
Jeśli złączam kolumny z dwóch tabel to stosuję zapytanie:
Kod
select klient_id,nazwa_klienta,miasto_klienta,nazwa_towaru,ilosc_w_kg from towar, klienci where klienci.klient_id = towar.towar.id
-to dostaję złaczenie bez problemu, a jeśli probuje tak (na inne sposoby też próbowałem):
Kod
select klient_id,nazwa_klienta,miasto_klienta,nazwa_towaru,ilosc_w_kg,wartosc_faktury from towar, klienci, faktury where klienci.klient_id = towar.towar.id[
lub tak:
Kod
select klient_id,nazwa_klienta,miasto_klienta,nazwa_towaru,ilosc_w_kg,wartosc_faktury from towar, klienci, faktury where klienci.klient_id = towar.towar.id and klienci.klient_id=faktury.klient_id[
-dostaję taki komunikat:
Kod
Column 'klient_id' in field list is ambiguous
-tzn. ze kolumna klient_id jest "nie jasna" . Czy mozna i jaki mniej więcej zapytanie sql mozna użyc to złączenia kolumn z trzech tabel lub wiecej....Pozdrawiam
gsk
dzieje sie tak poniewaz masz kolumne klient_id w dwoch tabelach... w tabeli klient i faktura... daj na gorze klient.klient_id as kki, faktura.klient_id as fki winksmiley.jpg i wtedy porownuj smile.gif
Da sie laczyc wiecej jak jedna tabele smile.gif Poczytaj o JOIN smile.gif
piotrino1
Cytat(gsk @ 11.03.2009, 19:22:57 ) *
dzieje sie tak poniewaz masz kolumne klient_id w dwoch tabelach... w tabeli klient i faktura... daj na gorze klient.klient_id as kki, faktura.klient_id as fki winksmiley.jpg i wtedy porownuj smile.gif
Da sie laczyc wiecej jak jedna tabele smile.gif Poczytaj o JOIN smile.gif
ok dzięki ,pokombinuj, napisz mi tylko czy jak łączę kolumny z trzech table to stosuję przy tym "END" -do trzeciej kolumny
Kod
select klient_id,nazwa_klienta,miasto_klienta,nazwa_towaru,ilosc_w_kg,wartosc_faktury from towar, klienci, faktury where klienci.klient_id = towar.towar.id and klienci.klient_id=faktury.klient_id[
i co to znaczy te "as fki as kki"-tzn. co wpisuje zamiast fki i kki? Pozdrawiam

P.S Mozesz mi podać przykład tego zapytania, na podstawie mojego ostatniego zapytania sql..
gsk
fki to taki przyklad nazwy aliasu jaki mozesz zastosowac ;D fki to skrot fatkura klient id ;D tak zeby bylo pozniej wiadomo o co chodzi...


  1. SELECT * FROM tabela JOIN tabela2 ON (tabela2.pole = tabela1.pole) JOIN tabela3 ON (tabela3.kolumna = tabela2.kolumna) WHERE .... ORDER BY ... itd.


tak wyglada mniej wiecej laczenie tabel smile.gif
piotrino1
Dzieki ,teraz pokombinuje sobie ....Pozdrawiam

Cytat(gsk @ 11.03.2009, 23:06:33 ) *
fki to taki przyklad nazwy aliasu jaki mozesz zastosowac ;D fki to skrot fatkura klient id ;D tak zeby bylo pozniej wiadomo o co chodzi...


  1. SELECT * FROM tabela JOIN tabela2 ON (tabela2.pole = tabela1.pole) JOIN tabela3 ON (tabela3.kolumna = tabela2.kolumna) WHERE .... ORDER BY ... itd.


tak wyglada mniej wiecej laczenie tabel smile.gif


To co podałes to wyszlo mi bez problemu, gorzej jak zamiast * wybieram np. select klient_id,towar_id,nazwa_klienta from towar,faktury,klienci join itd...i tu mi nie wychodzi....
Próbowałem na wszystkie sposoby, jak wybiore: select * idt...to wychodzi bez prolemu...
gsk
dawaj przed nazwami kolumn nazwy tabel smile.gif druga sprawa zastosuj aliasy o ktorych Ci wspominalem...
piotrino1
Cytat(gsk @ 12.03.2009, 19:59:34 ) *
dawaj przed nazwami kolumn nazwy tabel smile.gif druga sprawa zastosuj aliasy o ktorych Ci wspominalem...

Bez ciebie zginę chyba...Mógłbyś podać mi przykład w zapytaniu sql jesli chodzi o zlaczenie trzech tabel, ale nie ze robie select *,ale select nazwa kolumny, nazwa kolumny, nazwa kolumny itd....
Tak jak w poprzednim poscie dalem przyklad
Kod
select klient_id,towar_id,nazwa_klienta from towar,faktury,klienci join itd...i tu mi nie wychodzi....
/ Pozdrawiam
Lion_87
Tu fajny przykład jest:klik. Na nauke w sam raz.
gsk
a sproboj tak samo tylko z nazwa tabeli przed...

czyli:
  1. SELECT faktury.klient_id,towar.towar_id,klient.nazwa_klienta FROM towar,faktury,klienci

nie wiem czy dobrze wpisalem... winksmiley.jpg Jak cos to pytaj..
tomek_
tu masz prosty przykład złączenia trzech tabel z wykorzystaniem aliasów 

  1. SELECT t1.kolumna_x, t1.kolumna_y, t2.kolumna_z, t2.kolumna_q, t3.kolumna_r
  2.  
  3. FROM tabela1 AS t1, tabela2 AS t2, tabela3 AS t3
  4.  
  5. WHERE 
  6.  
  7. t1.kolumna_x = t2.kolumna_z AND t2.kolumna_z=t3.kolumna_r




prościej już się chyba pokazać nie da winksmiley.jpg 
piotrino1
Cytat(tomek_ @ 13.03.2009, 13:02:03 ) *
tu masz prosty przykład złączenia trzech tabel z wykorzystaniem aliasów

  1. SELECT t1.kolumna_x, t1.kolumna_y, t2.kolumna_z, t2.kolumna_q, t3.kolumna_r
  2.  
  3. FROM tabela1 AS t1, tabela2 AS t2, tabela3 AS t3
  4.  
  5. WHERE t1.kolumna_x = t2.kolumna_z AND t2.kolumna_z=t3.kolumna_r




prościej już się chyba pokazać nie da winksmiley.jpg

no BA!!! Wielkie dzięki....

Cytat(piotrino1 @ 13.03.2009, 18:05:55 ) *
no BA!!! Wielkie dzięki....


Wszystko ładnie mi sie pokazuje,o to mi chodziło guitar.gif .Tylko jak podaje mi wyniki, to z kazdej kolumny mam po 3 powtarzające się rekordy tzn:
Kod
monika
monika
monika
warszawa
warszawa
warszawa
itd...

Z czym to jest związane? Chodzi mi zeby mi po jednym rekordzie się pojawiało a nie "duplikowało" Pozdrawiam
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.