webForumDet fria alternativet

fråga om SELECT

3 svar · 584 visningar · startad av room

roomMedlem sedan mars 2001270 inlägg
#1

Hej.. Jag håller på med en site där jag använder en relationstabell mellan produkter och olika tillbehör.

Tabellernas design är ungefär så här:

produkter:
ID (int)
Namn (varchar)
...

tillbehor:
ID (int)
Namn (varchar)
...

relationer:
ID (int)
ProduktID (int)
TillbehorID (int)

För att nu få fram alla tillbehör till t ex produkt nr 2 gör jag en select som ser ut så här:

SELECT t.*,r.* FROM tillbehor t, relationer r WHERE r.TillbehorID = t.ID AND r.ProduktID = 2 ORDER By t.Namn;

Det funkar prima. Men vad jag nu vill göra är att öppna alla tillbehör som inte hör till produkt nr 2. Alltså man ska klicka på "lägg till fler tillbehör" och då vill jag inte lista de tillbehör som redan är associerade med produkten.

Om någon kan klura ut hur jag ska lösa detta vore jag tacksam.

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select namn
   from tillbehor as t
  where not exists
   (select * 
       from relationer as r
      where r.produktid = 2
        and r.tillbehorid = t.id)
@ndersMedlem sedan juni 200032 969 inlägg
#3
SELECT * FROM tillbehor WHERE ID NOT IN (SELECT TillbehorID FROM relationer WHERE ProduktID = 2)

mvh

roomMedlem sedan mars 2001270 inlägg
#4

tack

Tack för att ni finns!! Det verkar funka finfint.

Vet ej vems svar jag ska acceptera som slutgiltigt, men det får väl bli den som lyckades skriva in det först ;).

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)