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?