Autor | Zpráva | ||
---|---|---|---|
JozefIO Profil * |
#1 · Zasláno: 23. 9. 2014, 11:36:46
Dobrý deň,
mám tri tabulky prvé dve idú ako majú ale pri tretej mi vypisuje xkrát všetko SELECT m.modulid, m.blockid, b.bid, b.bkey, b.title, b.content, b.url, b.blockfile, b.view, b.expire, b.action, b.subscription FROM (( ".UN_TABLENAME_BLOCKS." b LEFT JOIN ".UN_TABLENAME_BLOCK_MODULES." m ON b.bid = m.blockid ) LEFT JOIN ".UN_TABLENAME_K88_TABLENAME_SUBMENUS." s ON (b.bkey='::MENU::' AND b.content=s.idm)) WHERE b.hwtopicm='".$hwtopic."' AND b.bposition='".addslashes($pos)."' AND b.active='1' ".$querylang." AND m.modulid IN ('0', '".$name."', '".$b_k_index."', '".$b_k_num_index."') OR s.link IN ( '".$name."', '".$b_k_index."', '".$b_k_num_index."') ORDER BY b.weight ASC"; |
||
Kajman Profil |
#2 · Zasláno: 23. 9. 2014, 12:49:59
Pokud z tabulky nic nevypisujete, stačí přidat distinct, který duplikátní řádky ošetří.
SELECT DISTINCT m.modulid,.... |
||
JozefIO Profil * |
#3 · Zasláno: 24. 9. 2014, 09:42:24
toto pomohohlo ale nie úplne s tabulky UN_TABLENAME_K88_TABLENAME_SUBMENUS vyberie 10krát pritom v tabulke je len 5krát, ids je unikatne id a ked dám aj sem distinct tak sa nevypíše potom nič.
|
||
Kajman Profil |
#4 · Zasláno: 24. 9. 2014, 10:23:39
Pokud řešíte jiný dotaz než z [#1], tak distinct nemusí pomoci.
Doporučuji nastudovat join a pochopit kartézký součin (pokud k jednomu řádku z tabulky b budou dva řádky v tabulce m a 5 řádků s, je normální, že dostanete všech 10 kombinací k tomu jenomu řádku). |
||
JozefIO Profil * |
#5 · Zasláno: 24. 9. 2014, 23:22:16
Ďakujem za odpoveď ako samouk som to čítal viem čo je kartézsky součin, len v tom to prípade je nežiadúci, pri tabulke M a S
|
||
Tori Profil |
Nechybí tam závorky?
$query = "SELECT DISTINCT m.modulid, m.blockid, b.bid, b.bkey, b.title, b.content, b.url, b.blockfile, b.view, b.expire, b.action, b.subscription FROM (( ".UN_TABLENAME_BLOCKS." b LEFT JOIN ".UN_TABLENAME_BLOCK_MODULES." m ON b.bid = m.blockid ) LEFT JOIN ".UN_TABLENAME_K88_TABLENAME_SUBMENUS." s ON (b.bkey='::MENU::' AND b.content=s.idm)) WHERE b.hwtopicm='".$hwtopic."' AND b.bposition='".addslashes($pos)."' AND b.active='1' ".$querylang." AND (m.modulid IN ('0', '".$name."', '".$b_k_index."', '".$b_k_num_index."') OR s.link IN ( '".$name."', '".$b_k_index."', '".$b_k_num_index."')) ORDER BY b.weight ASC"; |
||
JozefIO Profil * |
#7 · Zasláno: 25. 9. 2014, 00:22:05
Tak a trebalo mi tam doplniť len zátvorky ako píšete. A pritom som to mal tolko podnosom.
|
||
Časová prodleva: 10 let
|
0