webForumDet fria alternativet

Jämföra 3 tabeller...

3 svar · 428 visningar · startad av drew

drewMedlem sedan mars 2007845 inlägg
#1

Jag har 3 tabeller. tabell_1 inehåller bl a knd_id och frakt_id. tabell_2 innehåller knd_id och tabell_3 innehåller fakt_id.

Jag vill hämta raderna i från tabell_1 där knd_id finns i tabell_2 men frakt_id inte finns i tabell_3.

Om frakt_id finns i tabell_3 finns också motsvarande knd_id i tabell_2. Men det är inte säkert att knd_id i tabell_1 finns i tabell_2.

Jag har försökt på flera olkia sätt men får inte till det. Någon?

/D

emissionMedlem sedan dec. 19996 721 inlägg
#2

drew skrev:

Jag vill hämta raderna i från tabell_1 där knd_id finns i tabell_2 men frakt_id inte finns i tabell_3.

SELECT * FROM tabell_1 WHERE knd_id IN (SELECT knd_id FROM tabell_2) AND frakt_id NOT IN (SELECT frakt_id FROM tabell_3)
drewMedlem sedan mars 2007845 inlägg
#3

Toppen funkade perfekt. Tack.

Men, kommer tabell_2 och tabell_3 att bläddras genom för varje rad i tabell_1 eller är MySQL smart nog att buffra på något sätt? Det kan finnas ganska många rader i alla 3 tabellerna.

/D

emissionMedlem sedan dec. 19996 721 inlägg
#4

MySQL torde vara smart nog.

Man kan ta ut resultatet på att antal sätt (INNER JOIN + LEFT OUTER JOIN eller en EXISTS-fråga) men jag valde ovanstående eftersom det i det närmaste är en klarspråksfråga.

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