Avatar
Jan Demel
Redaktor
Avatar
Jan Demel:

Ahoj. Narazil jsem na takový problém. Jak vytvořit vícenásobný SQL join dotaz? Popíšu problém...
Chci vytvořit stránku, na které se bude ukazovat zápas, který se má odehrát. Ve výpisu bude uveden název
prvního týmu, název druhého týmu, čas, datum atd... Tabulka bowling_draft (jak vidíte v současném SQL dotazu níže) obsahuje ID prvního týmu a ID druhého týmu. Přidat název k prvnímu týmu zvládnu, to není problém. Jak ale přidat název také v druhému týmu? Pokud možno tak, aby se neřešily nějaké kolize buněk?

PROBLÉM: Přiřadit ke dvoum rozdílným ID týmu jejich jména ze stejné tabulky (bowling_teams)

Současný SQL dotaz

SELECT bowling_draft.id, bowling_draft.firstTeamId, bowling_draft.secondTeamId, bowling_draft.date, bowling_draft.time, bowling_teams.id AS "bowlingTeamId", bowling_teams.name
                                        FROM bowling_draft
                                        LEFT JOIN bowling_teams ON bowling_teams.id = bowling_draft.firstTeamId
                                        LEFT JOIN bowling_teams ON bowling_teams.id = bowling_draft.secondTeamId

Prosím na kolenou pomožte mi někdo - celkem to spěchá :D - mám deadline za pár hodinek

Editováno 28.7.2015 20:51
Odpovědět 28.7.2015 20:50
To co se zdá být nemožné, je vždy možné.
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Jan Demel
MrPabloz:

Skus sem poslat strukturu tabulek bowling_teams a bowling_draft.

JInak bude to něco ve stylu :

SELECT *
FROM bowling_draft draft
LEFT JOIN (SELECT * FROM bowling_teams) AS firstTeam ON firstTeam.id = draft.firstTeamId
LEFT JOIN (SELECT * FROM bowling_teams) AS secondTeam ON secondTeam.id = draft.secondTeamId
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 28.7.2015 21:43
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):

A co kdybys udělal subselect?
Něco jako

SELECT data,
  (SELECT name FROM bowling_teams WHERE id = bowling_draft.firstTeamId) AS firstTeamName,
  (SELECT name FROM bowling_teams WHERE id = bowling_draft.secondTeamId) AS secondTeamName
FROM bowling_draft
 
Nahoru Odpovědět 28.7.2015 21:44
Avatar
MrPabloz
Člen
Avatar
Odpovídá na MrPabloz
MrPabloz:

Taky je docela zbytečné dávat tam LEFT JOIN, stačí možna čistě pomocí WHERE :)

SELECT *
FROM bowling_draft AS draft, (SELECT * FROM bowling_teams) AS firstTeam, (SELECT * FROM bowling_teams) AS secondTeam WHERE firstTeam.id = draft.firstTeamId AND secondTeam.id = draft.secondTeamId
Nahoru Odpovědět 28.7.2015 21:45
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Jan Demel
Redaktor
Avatar
Jan Demel:

Děkuji všem moc za pomoc :) Nakonec jsem použil první řešení. Sice tam jsou nějaké duplikované buňky, to se ale vyřeší aliasem (Nette mě s tímhle nechce pustit).

Nahoru Odpovědět 28.7.2015 21:54
To co se zdá být nemožné, je vždy možné.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.