Entwickler-Ecke
Datenbanken - Frage zu DISTINCT in SQL Anweisung
ibh_compucat - Sa 14.08.10 19:05
Titel: Frage zu DISTINCT in SQL Anweisung
Hallo,
ich komm' mit DISTINCT nicht klar, folgendes Problem:
Ich habe eine (SQL) Tabelle mit den Feldern 'AUFTRAG', 'KARTON' und 'TEIL'. Zu einem Auftrag können mehrere Kartons gehören und in jedem Karton können mehrere Teile liegen.
Pro Teil wird ein Datensatz in der Tabelle erzeugt. Klappt alles - wunderbar.
Nun möchte ich abfragen (ADO-Query), welche Kartons zu einem bestimmten Auftrag gehören, also
???
SELECT DISTINCT AUFTRAG, KARTON FROM AUFTRAGSTABELLE ???
und als Ergebnis sehen:
Auftrag Karton
_______________
001 10000
001 10001
001 10002
ich bekomme aber:
Auftrag Karton
_______________
001 10000
001 10000
001 10000
001 10000
001 10001
001 10001
001 10001
001 10002
weil z.B. im Karton 10000 4 Teile lagen, also pro Teil (Datensatz) ein Ergebnis. Das ist doch nicht DISTINCT???
wie muß ich den SQL String umformulieren?
Gruß ibh_compucat
Moderiert von
Klabautermann: SQL-Tags hinzugefügt.
Xentar - So 15.08.10 02:55
SQL-Anweisung
1:
| Select distinct(Karton) from Auftragstabelle where Auftrag = 001 |
?
Moderiert von
Klabautermann: SQL-Tags hinzugefügt.
ibh_compucat - So 15.08.10 12:08
erst mal Danke für Eure Antworten.
@Gerd: ich verstehe das leider nicht so richtig, was die Microsoft-Leute so vorschlagen.
@xentar: wenn ich das eingebe:
SQL-Anweisung
1: 2:
| SELECT DISTINCT (KARTON) FROM AUFTRAGSTABELLE WHERE AUFTRAG = 001 |
dann kommt eine Exeption:
Im Projekt XYZ.exe ist eine Exception der Klasse EDatabaseError aufgetreten.
Meldung: 'ADOQuery1: Das Feld 'AUFTRAG' wurde nicht gefunden'.
Prozess wurde angehalten . . . u.s.w.
Offensichtlich kann die Query nur auf solche Felder zugreifen, die vor dem 'FROM' deklariert sind.
Aber was kann ich da tun?
Wäre GROUP BY eine Möglichkeit? Ich hab natürlich schon probiert, krieg das aber auch nicht in Funktion.
Gruß ibh_compucat
Moderiert von
Klabautermann: SQL-Tags hinzugefügt.
Gerd Kayser - So 15.08.10 12:42
ibh_compucat hat folgendes geschrieben : |
@Gerd: ich verstehe das leider nicht so richtig, was die Microsoft-Leute so vorschlagen. |
Microsoft schlägt dort zwei Lösungen vor. Die einfachste dürfte wohl sein, bei ADO-Connection CursorLocation auf adUseServer zu setzen.
Probiers einfach mal aus. Ist doch nur eine Zeile Code.
ibh_compucat - So 15.08.10 13:16
Danke an Gerd, ich habe das probiert und es funktioniert!
Aber auch die andere Möglichkeit habe ich noch einmal getestet und den Fehler gefunden.
Der SQL String muss lauten:
SQL-Anweisung
1:
| SELECT DISTINCT (KARTON), AUFTRAG FROM AUFTRAGSTABELLE WHERE AUFTRAG = 001 |
dann läuft alles wie gewünscht.
Noch einmal meinen Dank an Euch beide!
Gruß ibh_compucat
Moderiert von
Klabautermann: SQL-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!