"coolsti" <coo@goontrytospamme.com> skrev i en meddelelse
news:pan.2004.05.08.08.18.45.140000@goontrytospamme.com...
>
> > Men du skulle OR'e.
> > Det andet med group fangede jeg ikk
.
>
> Problemet er, jeg har en tabel som indeholder attributer, og strukturen er
>
> ID, NAME, VALUE
>
> ID er ikke unique, da der kan være flere attributer for en givne ID. ID
> er unique i en anden tabel, men denne tabel bruges til at holde alle
> attributer for hvert ID. Men de ting, som har en ID, er forskellige,
> således at de attributer, og antallet af attributerne, er ikke konstante.
>
> Så f.eks. kan jeg have to rækker:
>
> 5, 'color', 'red'
> 5, 'width', '50 inches'
>
> Opgaven er, at select alle ID's som har både (NAME = 'color' AND VALUE =
> 'red') AND (NAME = 'width' AND VALUE = '50 inches')
>
> og måske flere NAME/VALUE grouper.
>
> Det er derfor jeg har faktisk brug for den AND imellem klammerne og ikke
> en OR. Men min løsning, som jeg har fundet på en anden forum, anvendes
> OR, men også 1) grouperes alle rækker efter ID, og 2) giver tilbage kun
> de forkellige ID's som har lige så mange rækker i select svaret, som
> NAME/VALUE betingelser. Og på denne måde får jeg kun en list af ID's
> som matche ALLE NAME/VALUE parer, og ikke kun nogen af dem.
>
OK - så tror jeg, at jeg har forstået dit problem. Nu har du tilsyneladende
fundet en brugbar løsning, men den som du efterlyste fra starten har nok
været noget i retningen af:
SELECT tabel1.ID
FROM tabel AS tabel1, tabel AS tabel2
WHERE tabel1.ID=tabel2.ID AND (tabel1.NAME = 'color' AND tabel1.VALUE
='red') AND (tabel2.NAME = 'width' AND tabel2.VALUE = '50')
(ikke afprøvet)
Jeg tror næppe ovenstående er mere "økonomisk" end den anden løsning, du har
fundet - specielt ikke hvis antallet af betingelser øges. Men det er vel den
løsningsform, som du efterlyste fra starten?
/Kenneth