Autor Zpráva
sipo
Profil *
Zdravim, mam tabulku, kde je ulozeno IDskupiny a IDuzivatele (vazba_uzivatel_skupina) = kazdy uzivatel muze byt ve vice skupinach najednou, kazdy jednotlivy zaznam predstavuje jednu vazbu uzivatele se skupinou.

Chtel jsem vybrat vsechny zaznamy pomoci pole, ve kterem mam vice IDskupiny, tzn. chci vyvrat vsechny uzivatele, kteri jsou zahrnuti ve skupinach A,C, a aby se ve vysledne tab. vyskytovali pouze jednou.

Tohle mi vybere pouze uzivatele, ktery je clenem vsech skupin v poli jak A tak i C.

$poleskupin = Array (A,C)
SELECT IDuzivatele FROM vazba_uzivatel_skupina WHERE IDskupiny IN ('" . implode("',' ", $poleskupin) . "')

IDuzivatele | IDskupiny
----------------------------------
user1 | A
user1 | C
user2 | A

Ja chci vysledek - user1, user2
Dosavadni chybny vysledek je: user1
sipo
Profil *
Uz to mam

SELECT IDuzivatele FROM v_uzivatelskupina WHERE IDskupiny LIKE '%".implode("%' OR IDskupiny LIKE '%", $poleskupiny)."%' GROUP BY IDuzivatele"


diky
sicario
Profil
sipo
Teda to LIKE me taha za oci...

Na jednodussi vyfiltrovani duplicit by v tomto pripade stacilo DISTINCT.
SELECT DISTINCT IDuzivatele FROM vazba_uzivatel_skupina WHERE IDskupiny IN ('A', 'C')

S GRUP BY se da samozrejme uzit vice zabavy:-)

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: