Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL]blad w zapytaniu sql dotyczące złaczenia kolumn...
piotrino1
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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?(IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
gsk
post
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) i wtedy porownuj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Da sie laczyc wiecej jak jedna tabele (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Poczytaj o JOIN (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
piotrino1
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) i wtedy porownuj (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Da sie laczyc wiecej jak jedna tabele (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Poczytaj o JOIN (IMG:http://forum.php.pl/style_emoticons/default/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..

Ten post edytował piotrino1 11.03.2009, 19:52:40
Go to the top of the page
+Quote Post
gsk
post
Post #4





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
piotrino1
post
Post #5





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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...
Go to the top of the page
+Quote Post
gsk
post
Post #6





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


dawaj przed nazwami kolumn nazwy tabel (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) druga sprawa zastosuj aliasy o ktorych Ci wspominalem...
Go to the top of the page
+Quote Post
piotrino1
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Cytat(gsk @ 12.03.2009, 19:59:34 ) *
dawaj przed nazwami kolumn nazwy tabel (IMG:http://forum.php.pl/style_emoticons/default/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

Ten post edytował piotrino1 12.03.2009, 20:28:40
Go to the top of the page
+Quote Post
Lion_87
post
Post #8





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Tu fajny przykład jest:klik. Na nauke w sam raz.

Ten post edytował Lion_87 12.03.2009, 20:46:05
Go to the top of the page
+Quote Post
gsk
post
Post #9





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


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... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jak cos to pytaj..
Go to the top of the page
+Quote Post
tomek_
post
Post #10





Grupa: Zarejestrowani
Postów: 40
Pomógł: 4
Dołączył: 6.11.2008
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)  
Go to the top of the page
+Quote Post
piotrino1
post
Post #11





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 15:43