Jag sitter med ett riktigt soppigt problem där jag måste få viss data ur en tabell men jag får det inte fungera som tänkt. Skulle det inte gå med något i stil med Hej Men du får ju göra en subselect som jag visade, alternativt en join: Vill bara förtydliga det Nicklas säger med ett exempel: Tack för hjälpen! Det var guld värt.. Har leverans om en 1 timme av detta och ni räddade min dag... :-)panik!! SQL hjälp sökes
Tabellen ser ut som nedan och är sorterad på fältet GaugeFKID som är en främmande nyckel. fältet CalibrationID är primärnyckel. Det jag vill få ut är det sista/högsta CalibrationID per GaugeFKID samt att de andra fälten ska följa med som synliga i resultatet.
RÅDATATABELLEN
CalibrationID GaugeFKID CalibrationDate CalibrationResultID
4770 1 2006-11-14 -1
2146 1 2004-04-07 1
1162 2 2003-06-11 1
461 2 2003-02-25 -1
4637 5 2005-10-11 2
2944 5 2004-09-13 1
2659 5 2006-08-22 2
OSV... OSV..... OSV..... OSV......
EFTER FRÅGAN VILL JAG HA DET PRESENTERAT SÅ HÄR. Alltså de högsta CalibrationID per grupp GaugeFKID.
CalibrationID GaugeFKID CalibrationDate CalibrationResultID
4770 1 2006-11-14 -1
1162 2 2003-06-11 1
4637 5 2005-10-11 2
Den som hjälper mig med detta utnämner jag bums till kung av SQL.
Tack på förhand
MickeSv: panik!! SQL hjälp sökes
SELECT Max(CalibrationID) FROM Table GROUP BY GaugeFKID
För att få ut alla calibrationID, och sen:
SELECT kolumn1, kolumn2, ... FROM TABLE WHERE CalibrationID IN (SELECT Max(CalibrationID) FROM Table GROUP BY GaugeFKID)
?Sv:panik!! SQL hjälp sökes
Ja jag kommer så långt att jag får fram de sista CalibrationID per GaugeFKID enligt nedan.
SELECT Max(Calibrations.CalibrationID) AS MaxförCalibrationID, Calibrations.GaugeFKID
FROM Calibrations
GROUP BY Calibrations.GaugeFKID;
men sen är det stopp. Så fort jag hakar på något av de andra fälten CalibrationDate eller CalibrationResultID skiter sig allt.....
MickeSv: panik!! SQL hjälp sökes
SELECT Max(c1.CalibrationID) AS MaxförCalibrationID, c1.GaugeFKID
FROM Calibrations c1
GROUP BY c1.GaugeFKID
LEFT JOIN
SELECT ...kolumner... FROM Calibrations c2
ON c1.calID = c2.calID.Sv:panik!! SQL hjälp sökes
SELECT Calibrations.*
FROM Calibrations INNER JOIN
(SELECT c1.GaugeFKID, Max(c1.CalibrationID) AS MaxförCalibrationID
FROM Calibrations c1
GROUP BY c1.GaugeFKID) AS c2 ON (Calibrations.CalibrationID = c2.CalibrationID) AND (Calibrations.GaugeFKID = c2.GaugeFKID)
Sv: panik!! SQL hjälp sökes
Jag blev totalt insnöad på att det skulle räcka med en fråga då det bara var en tabell det var frågan om......
Nedan är den fungerande SQL:en
SELECT GaugeFKID, CalibrationDate, CalibrationResultID, CalibrationID
FROM Calibrations
WHERE CalibrationID IN (SELECT Max(Calibrations.CalibrationID) AS CalibrationID
FROM Calibrations
GROUP BY Calibrations.GaugeFKID;);