Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Jak połączyć tabele, by odpowiednio posortować rekordy
Forum PHP.pl > Forum > Bazy danych > MySQL
teom
Siedzę od rana i nie mogę dojść rozwiązania. Mam dwie tabele:

Tab1
kod1, imie1, kod2, imie2
21, ola, 23,stefcia
22, kazia, 23,stefcia
22, kazia, 21,ola

Tab2
id, imie, lp
21,ola,1
22,kazia,2
23,stefcia ,3

Po połączeniu tabel (wspólnym mianownikiem jest kolumna "kod" i "id") chcę uzyskać wirtualną tabelę taką, gdzie zamiast "imion" z Tab1 występuje "lp" z Tab2. Czyli chcę uzyskać taką tabelę:

Tab3
kod1, imie1, kod2, imie2
21, 1, 23, 3
22, 2, 23, 3
23, 2, 21, 1

I taką tabelę chcę posortować wg "imie1" a potem " imie2" czyli ORDER BY tab3.imie1, tab3.imie2

Robię to tak, ale mi nie wychodzi:
  1. SELECT * FROM tab1, tab2 WHERE tab1.kod1=tab2.id AND tab1.kod2=tab2.id ORDER BY tab2.lp

Jak to rozwiązać?
Rochu
Cytat
gdzie zamiast "imion" z Tab1 występuje "lp" z Tab2

czyli zamiast imie1 i imie2 ma byc lp z tab2 tak? jesli tak to ponizsze zapyt powinno byc ok:

  1. SELECT kod1, kod2, lp AS imie1, lp AS imie2 FROM tab1 LEFT JOIN tab2 ON id = kod1 ORDER BY imie1


zdaje mi sie ze cos cie zle zrozumialem, dlatego tez nie do konca moze byc to o co ci chodzilo
teom
Wiesz co, to działa. Tylko co należy zmienić, aby w wyniku pokazywał mi "imiona" zamiast "lp"?
Rochu
nie wiem czemu, ale nie moge cie do konca zrozumiec, tabela po polaczeniu tych dwoch tabel ma wygladac jak ponizej czy inaczej?

Tab3
kod1, imie1, kod2, imie2
21, 1, 23, 3
22, 2, 23, 3
23, 2, 21, 1

kod1 = id z tab1
kod2 nic sie nie zmienia
imie1 to = ?
imie2 to = ?
teom
kod1 = id z tab2
kod2 = id z tab2
imie1 = lp z tab2
imie2 = lp z tab2

W zasadzie twój kod sprawdza się znakomicie - zmieniłem tylko to "ORDER BY imie1, imie2"

Szczerze Ci dziękuję
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.