Access-SQL: GROUP-BY- und CONCAT-Problem

Hallo,

ich wollte in Access2000 eine Abfrage programmieren im folgenden Stil:

SELECT Prefix AS PartNumber, SUM(Price) AS TotalSum
FROM Parts
GROUP BY PartNumber;

Dabei funktioniert das GROUP BY mit dem Alias „PartNumber“ nicht. Mit dem tatsächlichen Spaltennamen „Prefix“ geht´s hingegen. Ist das ´ne Access-Einschränkung, oder kann ich was anders machen, so daß es funktioniert?

Das zweite Problem ist, daß Access offenbar kein CONCAT kennt. Nun weiß ich nicht recht, wie ich Strings miteinander verknüpfen kann, sozusagen als Alternative zu dem hier:

SELECT CONCAT(Prefix, Base, Suffix) AS PartNumber, SUM(Price) AS TotalSum
FROM Parts
GROUP BY PartNumber;

Da steckt das GROUP-BY-Problem übrigens auch wieder drin. Das könnte ich hier aber umgehen, indem ich mittels CONCAT oderso eine Abfrage erstelle und diese dann mit einer weiteren Abfrage gruppiere. Bissl umständlich, aber es ginge.

Über Hinweise würde ich mich sehr freuen,
Kristian

Was gefunden zum CONCAT-Problem

Das zweite Problem ist, daß Access offenbar kein CONCAT
kennt. Nun weiß ich nicht recht, wie ich Strings miteinander
verknüpfen kann, sozusagen als Alternative zu dem
hier:

SELECT CONCAT(Prefix, Base, Suffix) AS PartNumber,
SUM(Price) AS TotalSum
FROM Parts
GROUP BY PartNumber;

Dazu habe ich eben mit Hilfe des Expression-Builders herausgefunden, daß der z.B. aus VBA bekannte &-Operator doch verwendet werden kann. Offensichtlich sind dabei aber die eckigen Klammern wichtig:

SELECT [Prefix] & "-" & [Base] & "-" & [Suffix] AS PartNumber, Price
FROM Parts;

Das also ist immerhin schon einmal gelöst.

hi!

SELECT CONCAT(Prefix, Base, Suffix) AS PartNumber,
SUM(Price) AS TotalSum
FROM Parts
GROUP BY PartNumber;
Da steckt das GROUP-BY-Problem übrigens auch wieder
drin.

bei einem group-by darfst du - nicht nur in access - keine alias-namen verwenden, da sich ein group-by NICHT auf die selektierten felder bezieht, sondern auf sämtliche felder der tabellen der from-klausel
in deinem obigen fall gib die felder prefix,base und suffix ganz einfach in das group-by rein

zum konkatinieren gebe ich an die access-professionals weiter (bzw. antwort siehe untere antword)

grüße,
tomh

Achso.

bei einem group-by darfst du - nicht nur in access - keine
alias-namen verwenden, da sich ein group-by NICHT auf die
selektierten felder bezieht, sondern auf sämtliche felder der
tabellen der from-klausel

Achso. Hm, ich dachte in der MySQL-Doku (mysql.com) gelesen zu haben, daß man zumindest dort auch Aliase verwenden kann, was auch plausibel klingt. Aber vielleicht habe ich mich auch verlesen. Deine Erklärung klingt auch nicht unplausibel :wink:

in deinem obigen fall gib die felder prefix,base und suffix
ganz einfach in das group-by rein

Wäre mal zu testen, ob das zum gleichen Ergebnis führt, da es ja eine Verschachtelung ist. Müßte aber gehen.

zum konkatinieren gebe ich an die access-professionals weiter
(bzw. antwort siehe untere antword)

Welche Antwort/d meinst Du? Meine eigene auf meinen Artikel? :wink:)) ODer meinst Du eine andere weiter unten im Forum?