Autor Zpráva
JozefIO
Profil *
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";
      
potrebujem aby sa posledná tabulka správala tak isto ako predposledná a nevznikali mi duplikáty
Kajman
Profil
Pokud z tabulky nic nevypisujete, stačí přidat distinct, který duplikátní řádky ošetří.
SELECT DISTINCT m.modulid,....
JozefIO
Profil *
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
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 *
Ď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";
edit: doplněno distinct
JozefIO
Profil *
Tak a trebalo mi tam doplniť len zátvorky ako píšete. A pritom som to mal tolko podnosom.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: