mikrocontroller.net

Forum: PC-Programmierung SQL Problem


Autor: Tim Hansen (timsen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

komme nicht weiter. Folgendes Problem:

tabelle_1 [id, req_id, date, spalte_1, spalte_2, spalte_3]

Ich hätte gern alle Datensätze (zumindest die id) einer Gruppierung nach 
req_id, von dierser das letzte Datum (max date).


SELECT
  id, req_id, max (date)
FROM
  tabelle_1
GROUP BY
  req_id

Fehler hier: die id fehlt in der GROUP BY Clause

Würde man die id mit reinehmen, erhält man jedoch wieder mehrere 
Datensätze zu einer req_id.

Wäre froh, wenn mir Jemand einen Tip geben könnte. Danke.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einer subquery lässt sich das so machen:

SELECT id FROM tabelle_1 as t1 WHERE date = (SELECT MAX(date) FROM 
tabelle_1 as t2 WHERE t1.req_id = t2.req_id);

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib am besten mal ein Beispiel, wie das Ergebnis aussehen soll.

Autor: wesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
entwender die Lösung von jan als korellierte Subquery...


...oder du musst die tabelle_1 halt 2 mal in der Fromklausel einbinden

FROM tabelle_1 t1,
     tabelle_1 t2

dann in WHERE-Klausel beide auf gleiche req_id matchen

WHERE t1.req_id = t2.req_id usw.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du ein GROUP BY verwendest, musst Du alle Spalten, die angezeigt 
werden sollen auch im GROUP BY angeben:

SELECT id, req_id, max (date) FROM tabelle_1 GROUP BY req_id

sollte dann so aussehen

SELECT req_id, id, max(date) FROM tabelle_1 GROUP BY req_id, id

Date muss im GROUP nicht angegeben werden, da es von einer Funktion 
aufgerufen wirdn (max)

Allerdings weiß ich nicht, ob die funktion MAX mit einem GROUP 
funktioniert. Ansonsten probiers mal mit einem ORDER BY

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.