Autor Zpráva
cislo5
Profil *
Mam problem pri sestaveni selectu:

Mam:
pole ve kterem je seznam IDskupin do kterych patrim $myGROUP = Array ...

Vazebni tabulku: v_objektskupina (IDobjektu, IDskupiny)
- vyjadruje souvstaznost, ktere skupiny maji k dispozici jake objekty

a tabulku: t_objektu (IDobjektu, typ[slozka;soubor];nazev)
- vyjadruje seznam ulozenych objektu a v typu je stanoveno ze se jedna o slozku nebo soubor

Chtel bych dotaz, ktery mi vybere vsechno co t_objektu.typ='slozka' a zaroven je platne to, ze jsem opravnen tento objekt (slozku) videt. Diky vazebni tabulce, kde jsou nastaveny jake skupiny vidi jake objekty. Neduplicitni vypis v pripade, ze jsem clenem vice skupin najednou a tentyz objekt je taktez pro stejne skupiny.



Mysql_Query("SELECT * FROM v_objektskupina, t_objektu WHERE v_objektskupina.IDskupiny LIKE '%".implode("%' OR IDskupiny LIKE '%", $myGROUP)."%' and t_objektu.IDobjektu = v_objektskupina.IDobjektu and t_objektu.typ='slozka' GROUP BY t_objektu.IDobjektu");

- tento select mi vyhodí vše ač objekt videt nemám :-(
pomůže někdo, prosím?
Joker
Profil
cislo5
A IDskupiny je řetězec?
Jak vypadá výsledný sestavený dotaz?
cislo5
Profil *
IDskupiny v tabulce v_objektskupina je typu varchar(10) a ve zkutecnosti se tam uklada retezec pismen (napr.: Sadm = Skupina administrator)
cislo5
Profil *
Proveril jsem zda pole $myGROUP obsahuje hodnoty IDskupin ke kterym patrim a tam je vse v poradku pole $myGROUP obsahuje napr. $myGROUP[Sadm]
Joker
Profil
cislo5
A určitě se má vybírat podle podřetězce? Tj. to "Sadm" se vybere i když dám hledat třeba "a"?

edit: Jo a ve většině případů by asi číselné ID bylo lepší.
Kajman_
Profil *
Mysql_Query("SELECT distinct t_objektu.* FROM v_objektskupina, t_objektu WHERE v_objektskupina.IDskupiny in ('".implode("','", $myGROUP)."') and t_objektu.IDobjektu = v_objektskupina.IDobjektu and t_objektu.typ='slozka'"); 
Joker
Profil
cislo5
Proveril jsem zda pole $myGROUP obsahuje hodnoty IDskupin
Pošlete, jak vypadá už sestavený SQL dotaz.
cislo5
Profil *
Finalni dotaz vypada odlisne, ale princip zustava zachovan:

$SQLdotaz = Mysql_Query("SELECT * FROM v_nastenkaskupiny, t_nastenky WHERE v_nastenkaskupiny.IDskupiny LIKE '%".implode("%' OR IDskupiny LIKE '%", $myGROUP)."%' and t_nastenky.IDnastenky = v_nastenkaskupiny.IDnastenky GROUP BY t_nastenky.IDnastenky");
cislo5
Profil *
Pole myGROUP se tvori takto:

$SQLdotaz = Mysql_Query("SELECT IDskupiny FROM vazbauzivatelskupina WHERE IDuzivatele='$IDuzivatele'");
$pole=array();

while ($row = mysql_fetch_array($SQLdotaz))
{
$pole[]=$row["IDskupiny"];
}
Kajman_
Profil *
Tak to se můžete na pole vykašlat a napsat dotaz rovnou...

SELECT distinct t.*
FROM   v_objektskupina vos, t_objektu t, vazbauzivatelskupina vus
WHERE  vus.IDuzivatele = '$IDuzivatele'
       and vos.IDskupiny = vus.IDskupiny
       and t.IDobjektu = vos.IDobjektu
       and t.typ = 'slozka'
cislo5
Profil *
nj opravdu to pomohlo, moc vam dekuju
Toto téma je uzamčeno. Odpověď nelze zaslat.

0