webForumDet fria alternativet

Onödig yttre select-sats?

2 svar · 280 visningar · startad av pettsson

pettssonMedlem sedan jan. 20021 122 inlägg
#1

För ett år sedan skrev jag ett revisionshanteringsprogram. Det har körts sen dess och funkat bra. I morse slutade en funktion att fungera, får SQL-fel på denna sats:

SELECT Max(temp.BoardSerialNo) AS MaxSerial 
FROM (
 SELECT test.BoardSerialNo 
 FROM board_revision rev 
 JOIN board_test test ON rev.HardwarePartNo = test.HardwarePartNo 
 WHERE rev.HardwarePartNo LIKE '$HardwarePartNo' 
 AND rev.HardwareRevision = '$HardwareRevision'
 ORDER BY BoardSerialNo DESC
) temp

Felmeddelandet pekade på 'ON rev.HardwarePartNo = test.HardwarePartNo...'.

Jag förstår inte varför det blev fel, så jag skrev om från grunden. Nu har jag detta:

SELECT MAX(test.BoardSerialNo) AS MaxSerial
FROM board_revision rev 
INNER JOIN board_test test ON rev.HardwarePartNo = test.HardwarePartNo
WHERE rev.HardwarePartNo LIKE '$HardwarePartNo'
AND rev.HardwareRevision = '$HardwareRevision'

Som gör det som ska göras. Vad är skillnaden på dessa två? Varför behöver jag inte ha den yttre selecten, eller har jag bara "tur" när jag testar den?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Ja, din yttre select är helt onödig. Varför hade du order by i den inre frågan? Det är också helt onödigt och egentligen inte korrekt SQL.

Vad fick du för felmeddelande?

pettssonMedlem sedan jan. 20021 122 inlägg
#3

Kommer inte ihåg... Jag höll på med den där ett bra tag, det var första gången jag gjorde någonting med join, och antagligen är det ett resultat av flera trial and error kombinerat. :r Felmeddelandet var "You have an error in your SQL-syntax"

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