drainMedlem sedan apr. 200165 inlägg Ja nu är det kört igen. Hur skriver man flera satser i en då man använder recordset?
EX (funkar ej):
"SELECT * FROM person WHERE namn=
SELECT namn FROM spelare WHERE alder>10"
Någon som har koll på det här med nästlade sql satser som kan hjälpa mig att uppnå det jag vill här??
------------------
simon says
tohaMedlem sedan dec. 1999707 inlägg Om du vill hämta första personen vars ålder är större än 10 så skall du skriva:
SELECT * FROM person WHERE namn =
(SELECT namn FROM spelare WHERE alder > 10)
Om du vill hämta ALLA som är över 10 så skriver du:
SELECT * FROM person WHERE namn IN
(SELECT namn FROM spelare WHERE alder > 10)
Sedan kan man ju fråga sig hur bra det är att ha namn som kritierie i ovanstående fall. Jag skulle nog använda mig av tabellens nyckelfält.
------------------
/ Torbjörn Hansson, webbutvecklare
Endero Sverige
drainMedlem sedan apr. 200165 inlägg Super duper!! Jag är med.
Det här med namn var liksom en exempel kod utan någon sådan där jätte poäng mer än som förklarning till vad jag menade :)
tack!!
------------------
simon says
LarsGMedlem sedan dec. 200012 464 inlägg
Om du vill hämta första personen vars ålder är större än 10 så skall du skriva:
SELECT * FROM person WHERE namn =
(SELECT namn FROM spelare WHERE alder > 10)
Om du vill hämta ALLA som är över 10 så skriver du:
SELECT * FROM person WHERE namn IN
(SELECT namn FROM spelare WHERE alder > 10)
Det här stämmer inte, den enda skillnaden mellan att använda in eller = är att om subqueryn resulterar mer än en post så får man fel om man använder =. (Generellt sett så är det fel att prata om sista eller första posten i en tabell.)
Om någon DBMS inte beter sig så, så följer den inte ANSI SQL specifikationen.
------------------
essentitia preter non sans multiplicandum
tohaMedlem sedan dec. 1999707 inlägg Aha, ok. Tack för rättelsen Lars! Rätt skall vara rätt.
------------------
/ Torbjörn Hansson, webbutvecklare
Endero Sverige