webForumDet fria alternativet

fråga om SELECT

Databaser & SQL

3 svar · 586 visningar · startad av room

Medlem sedan mars 2001270 inlägg
Frågan#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.

Medlem 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)
Medlem sedan juni 200032 967 inlägg
#3
SELECT * FROM tillbehor WHERE ID NOT IN (SELECT TillbehorID FROM relationer WHERE ProduktID = 2)

mvh

Medlem 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 ;).

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)