IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:28.7.2015 20:50

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:28.7.2015 21:43

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í
+2,50 Kč
Ř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):28.7.2015 21:44

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
MrPabloz
Člen
Avatar
Odpovídá na MrPabloz
MrPabloz:28.7.2015 21:45

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
Tvůrce
Avatar
Jan Demel:28.7.2015 21:54

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.