DET VIRKER!!!
Dit var rigtigt og så havde jeg glemt at ejerskab til en mappe også giver
adgang til billederne i de, dvs. reaultatet er blevet:
SELECT DISTINCT billeder.*
FROM billeder
INNER JOIN mapper
ON mapper.mappe_ID = billeder.mappe_ID
LEFT JOIN mappe_gruppe
ON mappe_gruppe.mappe_ID = billeder.mappe_ID
LEFT JOIN bruger_gruppe
ON bruger_gruppe.gruppe_ID = mappe_gruppe.gruppe_ID
WHERE
billeder.titel LIKE %streng%
AND
(bruger_gruppe.bruger_ID = [bruger_ID]
OR
mapper.open = 'open'
OR
mapper.user_ID = [bruger_ID])
ORDER BY
billeder.titel
Tusinde smil :)
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:sttoczirfg1a$.dlg@jcdmfdk.invalid...
> Peter Brodersen skrev:
>
>> .. men idet det ikke er et ufravigeligt krav, at det første kriterie
>> skal være opfyldt, så bør der vel LEFT JOIN'es i stedet for?
>
> Ja, enten det eller også skal der laves en UNION-forespørgsel (jeg kan
> dog ikke huske om MySQL understøtter det).
>
> Jeg havde overset ELLER i beskrivelsen af forespørgslen.
>
> I øvrigt tror jeg også der er en anden ting der ikke holder. Tobber
> skriver at betingelse 1: Brugeren har ret til at se billedet er opfyldt
> når:
>
> brugere.bruger_ID = gruppe_bruger.bruger_ID
> OG
> gruppe_bruger.gruppe_ID = mappe_gruppe.gruppe_ID
> OG
> mappe_gruppe.mappe_ID = billeder.mappe_ID
>
>
> - men ovenstående er jo et join på samtlige brugere (der har tilladelse
> til at se billedet), og det er derfor uafhængigt af hvilken bruger der
> aktuelt er logget ind.
>
> Jeg vil gætte på at kriterierne for at betingelse 1 er opfyldt i stedet
> skal være:
>
> gruppe_bruger.bruger_ID = [aktuelt brugerID]
> OG
> gruppe_bruger.gruppe_ID = mappe_gruppe.gruppe_ID
> OG
> mappe_gruppe.mappe_ID = billeder.mappe_ID
>
> Hvis det er rigtigt, behøver vi slet ikke have brugertabellen i spil i
> forespørgslen:
>
> SELECT DISTINCT billeder.*
> FROM billeder
> INNER JOIN mapper
> ON mapper.mappe_ID = billeder.mappe_ID
> LEFT JOIN mappe_gruppe
> ON mappe_gruppe.mappe_ID = billeder.mappe_ID
> LEFT JOIN gruppe_bruger
> ON gruppe_bruger.gruppe_ID = mappe_gruppe.gruppe_ID
> WHERE billeder.titel LIKE %streng%
> AND (mapper.open = 'open' OR gruppe_bruger.bruger_ID = [brugerID])
>
>
> --
> Jens Gyldenkærne Clausen
> Svar venligst under det du citerer, og citer kun det der er
> nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
> hvordan på
http://usenet.dk/netikette/citatteknik.html