Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Podwójne połączenie dwóch tabel
muaddib
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.11.2009

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


Witam. Proszę o pomoc w nastepującym problemie.

Istnieją sobie dwie tabele w MySql:

(IMG:http://www.muaddib.cba.pl/ftp/temp.jpg)


Wyobraźmy sobie sytuacje, że tabela TEMP ma służyć jako swoisty terminarz meczy pomiędzy drużynami z tabeli TEAMS.

I tak np w TEMP w rekordzie pierwszym w kolumnie A będzie przechowywane ID drużyny z tabeli TEAMS , podobnie w kolumnie B będzie przechowywane ID drużyny z tabeli TEAMS. Taki rekord da nam parę drużyn grających w pierwszej kolejce ligi itp.

Problem pojawia się gdy tworzę zapytanie MySQL

  1. SELECT * FROM temp, teams WHERE a = teams.id


Takie zapytanie nie da satysfakcjonującego wyniku, gdyż będzie brakować kolumn powiązanych z drużyną B.
Logicznym rozwiązaniem wydaje się napisać:

  1. SELECT * FROM temp, teams WHERE a = teams.id AND b = teams.id


lecz to powoduje pusty wynik.

Wytłumaczcie mi prosze jak mogę uzyskać wynik zawierający w jednym wierszu kolumny jednej i drugiej druzyny.


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
muaddib
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 10.11.2009

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


Dzięki. Rzadko używam JOINOW bo kiedyś były z nimi problemy i tak mi się utarło, a to okazuje się proste (IMG:style_emoticons/default/wink.gif)

Gdyby ktoś potrzebował to tu kod działającego zapytania:

  1. SELECT t.id, t.a, t.b, teamA.id AS idA, teamA.name AS nameA, teamA.sname AS snameA, teamB.id AS idB, teamB.name AS nameB, teamB.sname AS snameB
  2. FROM temp t
  3. JOIN druzyny teamA ON t.a = teamA.id
  4. JOIN druzyny teamB ON t.b = teamB.id


Dziekuje za pomoc john_doe
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 13:22