Permalänk
Medlem

Problem med ännu en sql fråga

Har följande tabeller

Tabel1 OrderNr ArtikelNr 1 200 2 150 3 200 4 200 5 200 6 150 7 200 8 200 Tabel2 OrderNr KundNr 1 5 2 4 3 5 4 6 5 5 6 4 7 9 8 11

Skulle sedan vilja ha ut vilka kunder som har handlat tex ArtikelNr 200, altså kundNr 5, 6, 9 , 11
hur skulle en sådan fråga se ut? tack på förhand

Visa signatur

ʕ•͡ᴥ•ʔ

Permalänk

Den skulle kunna se ut såhär:

SELECT `KundNr` FROM `Tabel2` WHERE `OrderNr` IN (SELECT `OrderNr` FROM `Tabel1` WHERE `ArtikelNr` = 200)

Permalänk
Medlem

Någon form av SQL JOIN är det du vill använda för att matcha data i båda tabeller.

Exempel:

SELECT Tabel2.KundNr FROM Tabel2 INNER JOIN Tabel1.OrderNr = Tabel2.OrderNr WHERE Tabel1.ArtikelNr = 200;

Exempel utan join (men i detta fall samma resultat):

SELECT Tabel2.KundNr FROM Tabel2, Tabel1 WHERE Tabel1.OrderNr = Tabel2.OrderNr AND Tabel1.ArtikelNr = 200;

(Med reservation att det inte matchar alla dialekter av SQL.)

Ska du sitta en del med SQL och behöverl ära dig mer rekommenderar jag att lära dig hur joins fungerar och vad som är skillnaden mellan dem. Oftast räcker INNER JOIN, eller som exemplet ovan utan join, men det kommer dyka upp fall där en annan variant behövs och då är det bra att kunna skillnaden.

Visa signatur

Efter att ni har läst det här har ni insett att det inte gav något.

Permalänk
Medlem

Tackar för hjälpen

SELECT Tabel2.KundNr FROM Tabel2, Tabel1 WHERE Tabel1.OrderNr = Tabel2.OrderNr AND Tabel1.ArtikelNr = 200;

gick snabbt men

SELECT `KundNr` FROM `Tabel2` WHERE `OrderNr` IN (SELECT `OrderNr` FROM `Tabel1` WHERE `ArtikelNr` = 200)

tog mycket längre tid

Visa signatur

ʕ•͡ᴥ•ʔ