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?
Databaser & SQLur Databashanterare & SQL
2 svar · 280 visningar · startad av pettsson
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?
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?
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"