webForumDet fria alternativet

ta hänsyn till en andra tabell

Databaser & SQLur Databashanterare & SQL

4 svar · 222 visningar · startad av Asterix

AsterixMedlem sedan dec. 1999483 inlägg
#1

jag har två tabeller en som heter spel och en som heter fel. I spel finns tre fält id, namn, demo och i fel finns id och spel_id. Hur gör jag för att plocka ut id, namn och demo från spel där demo är något och id finns inte i någon spel_id i fel. Går det?

------------------
/Emil Hesslow

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Normalt så skulle man skriva en sådan SQL-fråga som

   select * 
     from spel 
    where demo = 'abc'
      and id not in (select spel_id 
                       from fel)

Nu finns ju inte den konstruktionen i MySQL och jag ser inget sätt att skriva om den. Den enda (tråkiga) lösningen jag ser är att plocka upp spel_id från fel och bygga in dom i sqlsatsen.

  select distinct spel_id from fel

  select * from spel
   where demo = 'abc'
     and id not in (1,2,3)

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 01 mar 2001]

RobbanMedlem sedan dec. 19992 555 inlägg
#3

Finns några tips i manualen om hur man i en del fal kan komma runt denna begränsning. I det här fallet skulle det väl kunna bli någonting i stil med (har ej testat följande så jag är inte säker på att det fungerar):

SELECT spel.*
FROM spel
LEFT JOIN fel 
ON spel.id = fel.spel_id
WHERE spel.demo = 'abc'
AND fel.spel_id IS NULL

------------------
Robban < robban@lipogram.com >

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Ja, det funkar på det sättet. (Jag testade.) Bättre lösning än mitt alternativ.

------------------
essentitia preter non sans multiplicandum

AsterixMedlem sedan dec. 1999483 inlägg
#5

Det funkar utmärkt!

Jag tackar

------------------
/Emil Hesslow

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