Autor |
Beitrag |
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.06.06 09:10
Hallo,
ich habe eine Tabelle (Access 2000), Zugriff über Delphi ADO Komponenten.
Die Tabelle hat folgende Felder:
Name, Klemmen, Bedingung, sollmin, sollmax, gruppe
Die Sensoren können mit verschiedenen Werten mehrfach vorkommen. Anzeigen lasse ich das Ganze in einem DBGrid.
Nun mein Problem. Ich möchte das jeder Sensor nur einmal auftaucht.
Wenn ich eine SQL Abfrage wie folgt mache:
SQL-Anweisung 1:
| SELECT DISTINCT name from Sensoren WHERE gruppe="Abgas" |
funktioniert das auch, aber ich bekomme auch nur das Feld "name"
Wenn ich es so mache:
SQL-Anweisung 1:
| SELECT DISTINCT name, Klemmen, Bedingung, sollmin, sollmax, gruppe from Sensoren WHERE gruppe="Abgas" |
bekomme ich alle Felder, aber ich bekomme alle Sensoren die sich irgendwo in der Tabelle unterscheiden. Ich möchte aber das jeder Sensor nur einal auftaucht.
Kann mir jemand helfen, bin noch ein SQL Neuling
|
|
crowley
      
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Mo 26.06.06 09:35
morgen... versuch es doch mit einem Group By
SQL-Anweisung 1: 2: 3: 4:
| SELECT name, Klemmen, Bedingung, sollmin, sollmax, gruppe FROM Sensoren WHERE gruppe="Abgas" GROUP BY name |
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.06.06 09:46
Hallo,
funktioniert leider auch nicht! Es kommt eine Fehlermeldung:
Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck nicht als Teil der Aggregatfunktion einschließt.
Frank
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mo 26.06.06 10:03
SQL-Anweisung 1: 2: 3: 4:
| SELECT name, Klemmen, Bedingung, sollmin, sollmax, gruppe FROM Sensoren WHERE gruppe="Abgas" GROUP BY name, Klemmen, Bedingung, sollmin, sollmax, gruppe |
Einfach die Fehlermeldung umsetzen. 
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.06.06 22:32
@jasocul
Hallo, auch das funktioniert nicht.
Ich bekomme das gleiche Ergebnis wie bei der Abfrage mit Distinct.
Frank
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mo 26.06.06 22:36
SQL-Anweisung 1:
| SELECT DISTINCT s1.name, s2.Klemmen, s2.Bedingung, s2.sollmin, s2.sollmax, s2.gruppe from Sensoren s1, Sensoren s2 WHERE s1.gruppe="Abgas" and s2.name = s1.name; |
_________________ Markus Kinzler.
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.06.06 08:29
Erstmal Danke an alle die Helfen wollten, aber Leider führt auch letzte Abfrage nicht zum Erfolg.
Ich habe jetzt unzählige Sachen probiert, in diversen Büchern nachgesehen und Google durchforstet! Aber nichts gefunden. Es muss doch eine Möglichkeit geben, eine solche Abfrage durchzuführen.
Wäre schön, wenn noch einer eine Idee hätte
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 27.06.06 08:41
Deine Anforderung ist falsch.
Beispiel:
Du willst jeden Sensor nur einmal bekommen. Ein Sensor kommt aber bei zwei verschiedenen Namen vor. Trotzdem wills du die Namen angezeigt bekommen.
Welcher Name soll denn angezeigt werden, wenn der Sensor nur einmal erscheinen darf?
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.06.06 09:01
Du hast Recht, daran habe ich gar nicht gedacht, weil es eigentlich egal ist welchen der Datensätze ich bekomme. Sie dienen nur jeweils als Grundlage zum Exportieren. Also würde es reichen, wenn ich jeweils den ersten Datensatz bekäme in der ein bestimmter Sensor auftaucht.
Ich möchte im Prinzip eine Abfrage mit wie mit:
SQL-Anweisung 1:
| SELECT DISTINCT Sensor FROM Sensoren WHERE Gruppe = "Abgas" |
Von jedem Datensatz der dabei rauskommt, möchte ich aber auch alle anderen Felder
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 27.06.06 09:28
Nur mal als Beispiel:
SQL-Anweisung 1: 2: 3: 4:
| SELECT sensor, max(name), max(Klemmen), max(Bedingung), min(sollmin), max(sollmax), max(gruppe) FROM Sensoren WHERE gruppe="Abgas" GROUP BY sensor |
Wenn es egal ist was drin steht, musst du nur die anderen Felder mit Aggregat-Funktionen aufrufen. Welche dann für deinen Fall die richtige ist, musst du selbst bestimmen.
|
|
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 27.06.06 09:46
Super  Jetzt hat es endlich geklappt.
Danke 
|
|