franzi
28-02-2007, 18:34
Pozdrav.
Evo pokušavam jedan query napisati, pa bih molio malu pomoć.
Dakle, imam dvije tabele:
grupe [ id | naziv ]
korisnici_grupe [ id | grupa_id | korisnik_id ]
Sistem je tako napravljen zbog toga što sam želio da svaki korisnik može biti pridružen više grupa. Sad, što meni treba? Dakle, rezultat mora sadržavati sve grupe, i pod stupac korisnik_id mora dati id korisnika ako je pridružen toj grupi. Sve to gledam samo za jednog korisnika.
grupe
id | naziv
1 | Administrator
2 | Moderator
3 | Zujo
korisnici_grupe
id | grupa_id | korisnik_id
1 | 1 | 3
2 | 1 | 5
3 | 2 | 8
4 | 3 | 3
E sada, ja sam fokusiran na korisnika 3. Trebam ispisati sve grupe i u stupcu korisnik_id staviti 3 ili NULL.
rezultat
grupe.id | grupe.naziv | korisnici_grupe.korisnik_id
1 | Administrator | 3
2 | Moderator | NULL
3 | Zujo | 3
Nadam se da ste razumjeli sve ovo.
E sada, ja sam pokušavao to nekakvim joinevima izvesti, ali ništa nije davalo zadovoljavajući rezultat. Primjerice:
SELECT grupe.id, grupe.naziv, korisnici_grupe.korisnik_id FROM grupe LEFT JOIN korisnici_grupe ON (grupe.id=korisnici_grupe.grupa_id)
To ne valja jer uzme u obzir sve korisnike, a kad dodam WHERE korisnik_id = 3 onda ne izbaci red pod brojem dva (Moderator) jer je tamo pod korisnik_id = NULL.
P.S.: proučavao sam i mysqlov manual o JOINovima. Mogu reći samo jedno: užas.
Evo pokušavam jedan query napisati, pa bih molio malu pomoć.
Dakle, imam dvije tabele:
grupe [ id | naziv ]
korisnici_grupe [ id | grupa_id | korisnik_id ]
Sistem je tako napravljen zbog toga što sam želio da svaki korisnik može biti pridružen više grupa. Sad, što meni treba? Dakle, rezultat mora sadržavati sve grupe, i pod stupac korisnik_id mora dati id korisnika ako je pridružen toj grupi. Sve to gledam samo za jednog korisnika.
grupe
id | naziv
1 | Administrator
2 | Moderator
3 | Zujo
korisnici_grupe
id | grupa_id | korisnik_id
1 | 1 | 3
2 | 1 | 5
3 | 2 | 8
4 | 3 | 3
E sada, ja sam fokusiran na korisnika 3. Trebam ispisati sve grupe i u stupcu korisnik_id staviti 3 ili NULL.
rezultat
grupe.id | grupe.naziv | korisnici_grupe.korisnik_id
1 | Administrator | 3
2 | Moderator | NULL
3 | Zujo | 3
Nadam se da ste razumjeli sve ovo.
E sada, ja sam pokušavao to nekakvim joinevima izvesti, ali ništa nije davalo zadovoljavajući rezultat. Primjerice:
SELECT grupe.id, grupe.naziv, korisnici_grupe.korisnik_id FROM grupe LEFT JOIN korisnici_grupe ON (grupe.id=korisnici_grupe.grupa_id)
To ne valja jer uzme u obzir sve korisnike, a kad dodam WHERE korisnik_id = 3 onda ne izbaci red pod brojem dva (Moderator) jer je tamo pod korisnik_id = NULL.
P.S.: proučavao sam i mysqlov manual o JOINovima. Mogu reći samo jedno: užas.