Autor | Zpráva | ||
---|---|---|---|
Suta Profil |
#1 · Zasláno: 22. 4. 2008, 21:52:27 · Upravil/a: Suta
V první tabulce mám seznam všech registrovaných hráčů na stránkách.
Tabulka 1: seznam_uzivatelu Sloupce: jmeno_uzivatele, treba_email ... atd. Ve druhé tabulce pak seznam hráčů, kteří jsou aktuálně přihlášení a hrají u nějakého stolu. Tabulka 2: seznam_hracu Sloupce: hrac_1, hrac_2, id_stolu atd.... Pozn.: předpokládejme, že hodnoty sloupcu jmeno_uzivatele z první tabulky a hrac_1 ze druhé jsou totožné. Nemůžu přijít na sql dotaz, který: vypíše všechny uživatele (z tabulky 1) a u každého, který bude zapsán i ve druhé tabulce (hraje u nějakého stolu) přidá poznámku, že je přihlášený a hraje (u kterého stolu, s kým atd...). Nebo jinými slovy: když použiji vnořený select v části WHERE, pak mi dotaz vrátí pouze uživatele, kteří budou aktuálně hrát (budou i ve druhé tabulce), já však chci vypsat všechny, ale u těch, kteří budou i ve druhé tabulce chci vypsat určité údaje navíc (z té druhé tabulky)... Jde to pomocí jednoho sql dotazu? Nikde jsem nenašel, zda-li existuje v sql něco jako "if" ... přidej "něco" ... |
||
Kajman_ Profil * |
možná něco jako
select s.jmeno_uzivatele,group_concat(concat_ws(':',h.souper,h.id_stolu)) souperi from seznam_uzivatelu s left join (select hrac_1 hraje, hrac_2 souper,id_stolu from seznam_hracu union select hrac_2, hrac_1,id_stolu from seznam_hracu) h on s.jmeno_uzivatele=h.hraje group by s.jmeno_uzivatele |
||
Suta Profil |
#3 · Zasláno: 23. 4. 2008, 13:43:38
Kajman_
děkuju, prostuduju |
||
Suta Profil |
#4 · Zasláno: 23. 4. 2008, 23:47:20 · Upravil/a: Suta
Zasílám svou definitivní verzi.
SELECT seznam_uzivatelu.jmeno_uzivatele AS jmeno_uzivatele, seznam_hracu.souper AS jmeno_soupere FROM seznam_uzivatelu LEFT JOIN seznam_hracu ON seznam_uzivatelu.jmeno_uzivatele = seznam_hracu.jmeno_uzivatele |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0