Autor Beitrag
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:

ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 406

Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
BeitragVerfasst: Mo 26.06.06 09:35 
morgen... versuch es doch mit einem Group By

ausblenden 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 26.06.06 10:03 
ausblenden 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. :wink:
frank-wob
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 26.06.06 22:36 
ausblenden 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 27.06.06 09:28 
Nur mal als Beispiel:
ausblenden 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



BeitragVerfasst: Di 27.06.06 09:46 
Super :dance: Jetzt hat es endlich geklappt.

Danke :zustimm: