Autor | Zpráva | ||
---|---|---|---|
peta Profil |
Mam 3 tabulky.
user - uzivatel pres - text prezenteci reg - formulare registraci Potrebuji vybrat seznam uzivatelu registrovanych na konferenci (`idconf`=1) a pridat k nim seznam jejich prezentaci pro tuto konferenci. Dotaz jsem sestavil takto, ale konference mi tam duplikuje 4x. Muzete mi poradit? Pripadne, jestli by nebylo lepsi jit cestou dvou dotazu nez se pokouset to takto spojit? stejne pak delam pro kazde id prezentace link na zobrazeni jejiho textu. SELECT DISTINCT `b`.`idconf`, CONCAT(`a`.`name1`,' ',`a`.`name2`) AS `name`, `a`.`affiliation`, GROUP_CONCAT(`c`.`idpres` SEPARATOR ';') AS `idpres` FROM `c_reg` `b` LEFT JOIN `c_user` `a` ON `a`.iduser=`b`.`iduser` LEFT JOIN `c_pres` `c` ON `c`.iduser=`a`.`iduser` WHERE `b`.`idconf`=%s GROUP BY `a`.`iduser` ORDER BY `name` ASC |
||
Kajman Profil |
#2 · Zasláno: 30. 8. 2012, 09:44:17
Podobná situace s porovnávanými řešeními je na
http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php |
||
peta Profil |
Mno, ja to vyresil dvema dotazy.
K tomu clanku jsem uz jednou napsal, proc si myslim, ze je chybne. SELECT `a`.`iduser`, `b`.`idconf`, CONCAT(`a`.`name1`,' ',`a`.`name2`) AS `name`, `a`.`affiliation` FROM `c_reg` `b` LEFT JOIN `c_user` `a` ON `a`.`iduser`=`b`.`iduser` LEFT JOIN `c_pres` `c` ON `c`.`iduser`=`a`.`iduser` WHERE `b`.`idconf`=%s ORDER BY `name` ASC $query = "SELECT `idpres` FROM `c_pres` WHERE `idconf`=%s AND `iduser`=%s"; |
||
Kajman Profil |
#4 · Zasláno: 30. 8. 2012, 11:01:43
peta:
„ja to vyresil dvema dotazy.“ Tak to jste evidetně opět článek nepochopil. Druhý dotaz totiž spustíte tolikrát, kolik tam bude na konferenci uživatelů. Což je z hlediska výkonu nejhorší řešení. |
||
peta Profil |
#5 · Zasláno: 30. 8. 2012, 13:02:02
Aha, no jo. Lepsi bude `iduser` IN (1,2,3,4) :) To nevadi, tam stejne nebude vic nez 20 lidi. Neva, budu na to myslet pri dalsich upravach.
|
||
Časová prodleva: 12 let
|
0