AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehlerhafte Ausgabe bei SQL-Abfrage
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlerhafte Ausgabe bei SQL-Abfrage

Ein Thema von buyden · begonnen am 7. Feb 2006 · letzter Beitrag vom 7. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#1

Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 12:51
Datenbank: MySQL • Version: 4.1 • Zugriff über: ZEOS
Hi,

Ich hab mal wieder ein kleines SQL-Problemchen.

Ich habe ein DBgrid, in dem alle bearbeiteten Aufträge von einem Tag angezeigt werden sollen.

Es wird bei jeder Statusänderung in einem Auftrag automatisch ein neuer Datensatz in einer Statistiktabelle angelegt, der Auftragsnummer, Status, Datum und Urzeit beinhaltet.
Es kann also sein, das von einem Auftrag mehrere Einträge an einem Tag stammen.

In dem Grid soll jetzt aber nur der Letzte Eintrag jedes Auftrages an diesem Tag erscheinen.

Ich hab dafür folgenden Code:
Delphi-Quellcode:
with frmdata.qubearbeitet do
      begin
        sql.Clear;
        sql.Add('SELECT DISTINCT(auftrag), status, datum, zeit FROM statistik WHERE datum = '''+formatdatetime('yyyy-mm-dd',dtpbearbeitet.date)+''' AND techniker = "'+config.ReadString('Grundeinstellungen','Technikernummer','0')+'";');
        open;
      end;
Allerdings zeigt er mir trotz DISTINCT alle Datensätze an. - Sicher weil ja kein Datensatz wirklich doppelt ist stimmts?
Aber wie kann ich das anders lösen.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 12:59
versuche mal, ", status, datum, zeit" beim SELECT wegzulassen.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 13:17
Eine correlated subquery sollte helfen:

SQL-Code:
SELECT auftrag, status, datum, zeit
  FROM statistik o
  WHERE datum = :datum AND techniker = :techniker
    AND zeit = (select max(zeit) from statistik i where i.auftrag = o.auftrag)
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 13:19
@ Raven IV
Die sollen ja aber auch mit im Grid angezeigt werden.

@ Marabu
Werd ich probieren.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 14:33
Zitat von marabu:
SQL-Code:
SELECT auftrag, status, datum, zeit
  FROM statistik o
  WHERE datum = :datum AND techniker = :techniker
    AND zeit = (select max(zeit) from statistik i where i.auftrag = o.auftrag)
Funktioniert. Aber nur mal zum Verständnis, was machst du denn mit dem "o" und dem "i"?
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 14:36
o und i sind Aliase für die Tabellennamen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 14:42
Ich kannte das nur mit ... AS ...
Dann sind die beiden ja in dem Fall Aliase für ein und die selbe Tabelle was bedeutet, das ich das Feld mit sich selbst vergleiche oder?
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 14:50
mit as setzt du ein Alias für einen Spaltennamen, mit dem du dann später eine Spalte adressieren kannst (nützlich bei Verwendung von Aggregatfunktionen oder bei Joins). Der hier verwendete Alias ist für Tabellennamen so das man in der Abfrage nicht immer den ganzen Tabellenname schreiben muss.

... from statistik i where i.auftrag ... steht für ... from statistik where statistik.auftrag ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von buyden
buyden

Registriert seit: 10. Apr 2003
Ort: Schneeberg
228 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 14:55
Also vergleiche ich doch die Spalte Auftrag mit sich selbst ...WHERE statistik.auftrag = statistik.auftrag Hab ich glaub ich verstanden.

Dankeschön.
Es gibt keine dummen Fragen, außer die von mir


MFG BUYDEN
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Fehlerhafte Ausgabe bei SQL-Abfrage

  Alt 7. Feb 2006, 15:00
Zitat:
Also vergleiche ich doch die Spalte Auftrag mit sich selbst
Mit verschiedenen "Instanzen" der Tabelle, deshalb sind in diesem Fall die Aliase auch notwendig.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz