webForumDet fria alternativet

self-joined insert

3 svar · 251 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Om jag mot Northwind har detta för att se vilka produkter som är köpta tillsammans.

--Skapa tabell 
CREATE TABLE LinkProducts
(
   productid INTEGER NOT NULL REFERENCES Products (productid),
   linked_productid INTEGER NOT NULL REFERENCES Products (productid),
   PRIMARY KEY (productid, linked_productid)
)
-- Ta ut produkter
SELECT P.productid, P.productname
 FROM Products AS P
 JOIN LinkProducts AS L
  ON P.productid = L.linked_productid
   AND L.productid = @this_product

Scenario: Productid läggs in i en kundvagn och när sedan en order skapas så skall alla productid läggas in i LinkProducts. Så frågan är hur INSERTen skall se ut.

... WHERE orderid in (SELECT productid FROM [Order Details] WHERE orderID = @orderid)
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Varför behövs denna tabell? Har du inte kvar alla ordrar?

DinoMedlem sedan sep. 20011 914 inlägg
#3

Så kan man ju oxå se det.
Hur skulle då en frågan se ut som skall ta ut fem produkter som har köpts i samband med en viss produkt.

LarsGMedlem sedan dec. 200012 464 inlägg
#4
select * 
from products
where productId 
in (select productId 
  from orders 
 where orderId
  in (select orderId 
           from orders
         where productId = 4711))
and productId <> 4711
265 ms totalt · 3 externa anrop · v20260731065814-full.30151723
134 ms — hämta forumlista (db)
129 ms — hämta statistik (db)
131 ms — hämta tråd, inlägg och bilagor (db)