Autor | Zpráva | ||
---|---|---|---|
danhill Profil |
#1 · Zasláno: 24. 5. 2016, 21:33:30
Předem děkuji za pomoc.
Zase řeším dotaz přes dvě tabulky a nejde mit to samozřejmě. Mám nyní takový dotaz: SELECT gc_code FROM final WHERE gc_code IN (SELECT gc_code FROM `finds` WHERE `user` = '487') A potřeboval bych tento dotaz trochu upravit, tak aby dotaz vrátil dva sloupce a všechny gc_code z první tabulky, jen v druhém sloupci by u těch,které jsou uživatele 487 napsal cokoli jiného než u těch gc_code,které tohoto uživatele nejsou. A je jedno co napíše.Třeba find a notfind, nebo true a false ... Děkuji moc. |
||
juriad Profil |
SELECT f.gc_code, g.nejaky_sloupec FROM final f LEFT JOIN finds g ON f.gc_code = g.gc_code AND g.user = 487 Následně podle toho nejaky_sloupec poznáš, zda byla nalezená nebo ne. V případě not found bude hodnota NULL. |
||
danhill Profil |
Děkuji , ano, tohle je přesně výsledek, jaký jsem si představoval.
Tak do "nejaky_sloupec" jsem zadal taky gc_code, protože to je hodnota,kterou porovnávám a je v obou tabulkách ... Jen v obou tabulkách je přes 15000 řádků a zpracování takového dotazu trvá skoro půl minuty, takže bude asi potřeba ho trochu postavit jinak. A ještě se chci zeptat. Když budu chtít tímto dotazem vypsat všechny sloupce z tabulky final, pak to mohu napsat takto?: SELECT f.*, g.gc_code |
||
juriad Profil |
danhill:
Ano, f.* bude fungovat.
Máš na těch tabulkách nějaké indexy nebo klíče? fc_code by měl primární klíč v tabulce finals. A doporučil bych index na dvojici (user, fc_code) v tabulce finds.
|
||
danhill Profil |
#5 · Zasláno: 24. 5. 2016, 23:31:57
gc_code - ano přeně na ty sloupce jako píšeš mám primární klíče. Už z minula,když jsem právě tady v jiném vlákně řešil ten původní dotaz.Velice to tehdy pomohlo.
Ten proběhne během chviličky,ale na tohle se fakt čeká velmi dlouho ... |
||
juriad Profil |
#6 · Zasláno: 24. 5. 2016, 23:41:50
danhill:
Ukaž celý dotaz, jeho explain ( explain select f.*, ... ),
definice tabulek ( show create table final; show create table finds)
|
||
Časová prodleva: 8 let
|
0