|
| Komplex SELECT Fra : Tobber |
Dato : 13-02-05 02:43 |
|
Hej kloge Åge
Jeg sveder over et problem. Jeg ønsker at lave en søgning i min mysql-DB til
min hjemmeside, men det jeg ønsker er meget indviklet - synes jeg.
jeg har 6 tabeller!
billeder
mapper
mappe_gruppe
grupper
gruppe_bruger
brugere
Dem behøver jeg kædet sammen således at jeg kun får de billeder at se hvor:
1. brugeren har ret til det
ELLER
2. den mappe hvor billedet ligger i er 'åben' for alle
OG
3. en søgetekst indgår i en beskrivelsen til billedet
Den første er opfyldt når og kun 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
Den anden betingelse er opfyldt med:
mapper.open = 'open' [enum]
OG
mapper.mappe_ID = billeder:mappe_ID
Den tredje er opfyldt med:
billeder.titel LIKE %streng%
Hvordan skal jeg skrive det samme til een request - eller er jeg tvunget til
at gøre noget af arbejdet med PHP. Jeg vil bare gerne kunne sortere i
resultatet. Jeg håber det er til at se hvad det er jeg ønsker.
| |
Peter Brodersen (13-02-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 13-02-05 03:03 |
|
On Sun, 13 Feb 2005 02:42:47 +0100, "Tobber" <torben@ringsoe.dk>
wrote:
>Jeg sveder over et problem. Jeg ønsker at lave en søgning i min mysql-DB til
>min hjemmeside, men det jeg ønsker er meget indviklet - synes jeg.
I første omgang vil jeg anbefale at spørge i nyhedsgruppen
dk.edb.database - med al sandsynlighed kan det ordnes i én og samme
query. Dine JOINs lader til at være de samme uanset hvad, så det er
blot et spørgsmål om dine WHERE-kriterier. For nr. 1s vedkommende kan
det sandsynligvis anbefales at lave LEFT JOINs i stedet for INNER
JOINs, så du stadigvæk kan matche rækker, også selv om der ikke er
nogen rettighed tilknyttet.
... og for en god ordens skyld: Er det "(1 ELLER 2) OG 3" eller er det
"1 ELLER (2 OG 3)", der skal være opfyldt?
Når det er klarlagt, så skulle det være til at sy en query sammen.
--
- Peter Brodersen
| |
Tobber (13-02-2005)
| Kommentar Fra : Tobber |
Dato : 13-02-05 11:18 |
|
Hej Peter
Det har du nok ret i. Så det vil jeg gøre. Spørge i dk.edb.database.
Til det spørgsmål du stiller.
Det er (1 og 3) eller (2 og 3).
"Peter Brodersen" <usenet2005@ter.dk> skrev i en meddelelse
news:cumchq$245$1@news.klen.dk...
> On Sun, 13 Feb 2005 02:42:47 +0100, "Tobber" <torben@ringsoe.dk>
> wrote:
>
>>Jeg sveder over et problem. Jeg ønsker at lave en søgning i min mysql-DB
>>til
>>min hjemmeside, men det jeg ønsker er meget indviklet - synes jeg.
>
> I første omgang vil jeg anbefale at spørge i nyhedsgruppen
> dk.edb.database - med al sandsynlighed kan det ordnes i én og samme
> query. Dine JOINs lader til at være de samme uanset hvad, så det er
> blot et spørgsmål om dine WHERE-kriterier. For nr. 1s vedkommende kan
> det sandsynligvis anbefales at lave LEFT JOINs i stedet for INNER
> JOINs, så du stadigvæk kan matche rækker, også selv om der ikke er
> nogen rettighed tilknyttet.
>
> .. og for en god ordens skyld: Er det "(1 ELLER 2) OG 3" eller er det
> "1 ELLER (2 OG 3)", der skal være opfyldt?
>
> Når det er klarlagt, så skulle det være til at sy en query sammen.
>
> --
> - Peter Brodersen
| |
|
|