Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Złaczenia tabel problem + konfliktem nazw
Mugol
post 22.10.2010, 00:13:20
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.02.2010

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


Witam

Mam mały problem (pewnie dla niektórych banalny ale ja sie z nim męcze już troche;/)

więc tak:
mam 3 tabele:
tabela 1: ladunki (ma miedzy innymi pola: kraj_pochodzenia, kraj_docelowy i typ_paczki - pola te przechowują odpowiednio 2 pierwsze id_kraju z tabeli kraje i id_paczki z tabeli paczki )
tabela 2: kraje (id_kraju, skrot, nazwa_pl, nazwa_en)
tabela 3: paczki (id_paczki, nazwa_pl, nazwa_en)

i teraz tak:
Chciałbym wybrać wszystkie pola z tabeli ladunki i wyswietlić je (to ta prosta cześć):

SELECT *
FROM ladunki;

na wynikach dostaje id_kraju i id_paczki a potrzebuje skrotu państwa z tabeli kraje i nazwa_pl, nazwa_en z tabeli paczki (tutaj pojawia się konflikt nazw - tabela kraje i paczki ma takie same nazwy tabel).

Próbowałem łączyc tabele na rożne sposoby np.:

SELECT *
FROM ladunki
LEFT JOIN kraje AS k1 ON k1.id_kraj = ladunki.zaladunek_kraj
LEFT JOIN kraje AS k2 ON k2.id_kraj = ladunki.przeznaczenie_kraj
LEFT JOIN paczki AS k3 ON typ_paczki = k3.id_paczka;

ale wystąpił maly problem:
odwołując się w wynikach na stronie $row->skrot dostaje wyniki nadpisane tzn: jesli podmienia mi kraj_pochodzenia to automatycznie taki sam skrót mam w kraj_docelowy mimo ze ma inny id;/
i tutaj konflikt nazw wywołując np $row->nazwa_pl dostaje nazwe kraju a potrzebuje nazwy typu paczki;/

(myslalem o jakis aliasach ale za nic nie wiem jak je podpiąc zeby mi błedu nie wywalało)

z góry dzieki za pomoc:)

Ten post edytował Mugol 22.10.2010, 07:56:04
Go to the top of the page
+Quote Post
rocktech.pl
post 22.10.2010, 00:50:38
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Sþróbuj tak.
  1. SELECT *.l,`k2`.`skrot` AS skrot1
  2. FROM ladunki AS l
  3. LEFT JOIN kraje AS k1 ON k1.id_kraj = ladunki.zaladunek_kraj
  4. LEFT JOIN kraje AS k2 ON k2.id_kraj = ladunki.przeznaczenie_kraj
  5. LEFT JOIN nadwozia AS k3 ON nadwozie = k3.id_nadwozie;


Ten post edytował rocktech.pl 22.10.2010, 00:51:06


--------------------
Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo. --Brian Moore

I never go looking for a sucker. I look for a Champion and make a sucker of of him. --Amarillo Slim


Home-made : js-gui-classes | Accordion | Tabs | Carousel / php-sms-classes | Obsługa bramki SMS MultiInfo | Obsługa bramki SMS Mobiltek
Go to the top of the page
+Quote Post
Mugol
post 22.10.2010, 08:00:23
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 3.02.2010

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


Niestety wywala mi błąd

  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '.l,`k2`.`skrot` as skrot1 FROM ladunki AS l LEFT JOIN kraje AS k1 ON k1.id_kraj ' at line 1
  2.  
  3. SELECT *.l,`k2`.`skrot` AS skrot1 FROM ladunki AS l LEFT JOIN kraje AS k1 ON k1.id_kraj = ladunki.zaladunek_kraj LEFT JOIN kraje AS k2 ON k2.id_kraj = ladunki.przeznaczenie_kraj LEFT JOIN paczki AS k3 ON typ_paczki = k3.id_paczki ORDER BY wyjazd_data ;


przebudowałem go troche na taki
  1. SELECT l.*,k2.skrot AS skrot2, k1.skrot AS skrot1, k3.nazwa_pl, k3.nazwa_en
  2. FROM ladunki AS l
  3. LEFT JOIN kraje AS k1 ON k1.id_kraj = l.zaladunek_kraj
  4. LEFT JOIN kraje AS k2 ON k2.id_kraj = l.przeznaczenie_kraj
  5. LEFT JOIN paczki AS k3 ON typ_paczki = k3.id_paczki


Teraz wszystko gra i buczy:) Dzieki za pomoc:)

Ten post edytował Mugol 22.10.2010, 08:22:02
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:28