SQL Mehrere Datensätze mit max. Wert

someguy

Lieutenant
Registriert
Sep. 2004
Beiträge
550
Hallo,

habe gerade folgendes kleines Problem. Habe das Datenmodell mal angehängt.

Ich schreibe gerade eine .aspx Seite, die den Inhalt dieser Datenbank anzeigt.

Nun sollen Luftdruck, Temperatur und Luftfeuchte jeder Station vom neuesten Datum bzw. Zeit(bei "DatumUhrzeit" bei WetterDaten) angezeigt werden.

Da ich schon lange nix mehr mit SQL gemacht habe fällt mir das gerade etwas schwer

Und ich brauche das halt als SQL Code, da ich das in Visual Studio eingebe.
 

Anhänge

  • WetterDatenV002.jpeg
    WetterDatenV002.jpeg
    39,9 KB · Aufrufe: 365
bei mir ists zwar auch schon ein paar jahre her, als ich mit sql das letzte mal was gemacht hab, aber so ein bisschen bekomm ich noch zusammen. und du bestimmt auch. ;)

Code:
SELECT
  `DRUCK_DEF`.`HighValueLimit` AS 'Luftdruck',
  `TEMP_DEF`.`HighValueLimit` AS 'Temperatur',
  `FEUCHTE_DEF`.`HighValueLimit` AS 'Feuchtigkeit',
  `WetterDaten`.`DatumUhrzeit` AS 'Datum'
FROM
  `Wetterdaten`,
  `DRUCK_DEF`,
  `TEMP_DEF`,
  `FEUCHTE_DEF`
WHERE
  `WetterDaten`.`Luftdruck` = `DRUCK_DEF`.`DRUCK_DEF_ID` AND
  `WetterDaten`.`Temperatur` = `TEMP_DEF`.`TEMP_DEF_ID` AND
  `WetterDaten`.`Luftfeuchte` = `FEUCHTE_DEF`.`FEUCHTE_DEF_ID`
ORDER BY
  `WetterDaten`.`DatumUhrzeit` DESC
LIMIT
  1
 
Also ganz so trival ist es dann doch nicht, er will je die Daten aller Wetterstationen haben. Wäre schon gewesen noch den SQL-Dialekt zu erfahren. Den Rest solltest du selbst hinbekommen.

Code:
SELECT	*
FROM	WetterDaten AS WD	
	
	INNER JOIN (
		--letzte messung jeder wetterstation auswerten
		SELECT	Station_ID
		,	MAX(DatumUhrzeit) AS DatumUhrzeit
		FROM	WetterDaten
		GROUP BY
			Station_ID
	) AS SUB
	ON	WD.Station_ID   = SUB.Station_ID
	AND	WD.DatumUhrzeit = SUB.DatumUhrzeit

	INNER JOIN
		DRUCK_DEF AS D
	ON	D.DRUCK_DEF_ID = WD.DRUCK_DEF_ID
	
	INNER JOIN
		TEMP_DEF AS T
	ON	T.TEMP_DEF_ID = WD.TEMP_DEF_ID
	
	INNER JOIN
		FEUCHTE_DEF AS F
	ON	F.FEUCHTE_DEF_ID = WD.FEUCHTE_DEF_ID
 
Zurück
Oben