Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - SQL bzw. ACCESS Abfrage


highlander78 - Sa 10.04.10 21:38
Titel: SQL bzw. ACCESS Abfrage
Hallo,

meine SQL Abfrage in diesem Format funktioniert:


SQL-Anweisung
1:
2:
3:
4:
5:
select A.Nummer,
Anzahl , B.Preis,
Anzahl * B.Preis as Gesamtpreis
FROM A LEFT JOIN B on A.Nummer=B.Nummer
GROUP BY A.Nummer,B.Preis



habe mir jetzt zum Testen eine Access Dantenbank angelegt , mit gleichen Spalten ,Tabellen wie in der SQL Datenbank.
Leider funktioniert die gleiche Abfrage mit Access DB nicht, wo ist da der Unterschied , wie muss mein String aussehen ?


Gruss

highlander78


JüTho - Sa 10.04.10 22:08

Hallo,

ich kenne die Dialekte nicht; aber ich weiß, dass bei manchen DBMS ein Tabellenname entweder immer oder niemals angegeben werden muss. Versuche also dies:

SQL-Anweisung
1:
2:
3:
4:
5:
select A.Nummer,
   A.Anzahl , B.Preis,
   A.Anzahl * B.Preis as Gesamtpreis
FROM A LEFT JOIN B on A.Nummer=B.Nummer
GROUP BY A.Nummer, B.Preis

Gruß Jürgen


highlander78 - So 11.04.10 14:04

Hallo,
habe deine Abfrage versucht, aber irgendwo ist noch ein Hacken drin ..
Bekomme diese Fehlermeldung:

Zitat:
System.Data.OleDb.OleDbException: Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Anzahl' nicht als Teil der Aggregatfunktion einschließt.


Gruss


Kha - So 11.04.10 15:06

Wozu überhaupt ein Group-By ohne Aggregtfunktion, da kannst du doch gleich Sort-By benutzen...?


highlander78 - So 11.04.10 16:41

Mit ORDER BY funktioniert es.

Danke für die Info.


JüTho - So 11.04.10 16:46

Zur Erläuterung siehe z.B. [Wikibooks] SQL: Gruppierungen [http://de.wikibooks.org/wiki/Einf%C3%BChrung_in_SQL:_Gruppierungen], vor allem das erste fehlerhafte Beispiel. Jürgen