Seite 1 von 3

Alias addieren

Verfasst: Mi, 14.11.2018 13:50
von hdh
Hallo zusammen,
ich habe drei Abfragen mit dem Alias s1,s2,s3 diese drei Werte möchten ich gerne addieren in einen vierten Alias gsp, habe schon alles versucht meiner Meinung nach, ich kriege es einfach nicht geregelt. Wäre für einen Hinweis dankbar.
LG Hans Dieter

Re: Alias addieren

Verfasst: Mi, 14.11.2018 17:05
von RobertG
Hallo Hans-Dieter,

Da Du den Code dazu nicht nennst hier nur ein allgemeiner Hinweis:
Bei einer Abfrage kannst Du Feldern einen Alias zuordnen. Dieser Alias ist aber nicht für die anderen Felder der Abfrage auslesbar. Der Alias kann erst für Anweisungen genutzt werden, die nach der Bezeichnung der Felder, also dem FROM kommt.

Poste doch einfach einmal etwas Code ...

Gruß

Robert

Re: Alias addieren

Verfasst: Mi, 14.11.2018 17:07
von F3K Total
Hallo,
ich verstehe die Frage nicht. Was meinst du mit "Alias addieren"?
In einer Abfrage von einer Tabelle ist der Alias der Name den du für eine Spalte der Abfrage vergibst, also etwa:

Code: Alles auswählen

SELECT "NACHNAME", "VORNAME", "NACHNAME"||', '||"VORNAME" AS "NAME" FROM "Adressen"
Hier ist der Spaltenname der aus NACHNAME, VORNAME zusammengesetzten Spalte eben NAME, der Alias für die zusammengesetzte Spalte.
Sieht dann so aus:
Alias.png
Alias.png (18.8 KiB) 7134 mal betrachtet
Lade ein Beispieldokument hoch, oder erkläre besser, was du erreichen möchtest.

Gruß R

Re: Alias addieren

Verfasst: Mi, 14.11.2018 17:38
von hdh
Hallo, danke für das schnelle reagieren.

ich habe die ganze DB angehängt. finden Abfragen EZP1 bis EZP3 möchte ich die Aliase addieren zum Gesamtpreis. Ich hoffe das ist möglich.



FGN.odb

Re: Alias addieren

Verfasst: Mi, 14.11.2018 17:41
von F3K Total
... kann keine DB finden???

Re: Alias addieren

Verfasst: Mi, 14.11.2018 17:51
von hdh
Hallo,
das ist der code
SELECT "Auftrag"."M1", "Auftrag"."EZP1", "Auftrag"."M2", "Auftrag"."EZP2", "Auftrag"."M3", "Auftrag"."EZP3", "M1" * "EZP1" + "M2" * "EZP2" + "M3" * "EZP3" AS "gsp" FROM "Auftrag", "Kunden Adressen" WHERE "Auftrag"."FSK" = "Kunden Adressen"."ID1"

ich hoffe es kann mir jemand helfen. danke

LG Hans Dieter Hahn

Re: Alias addieren

Verfasst: Mi, 14.11.2018 18:08
von F3K Total
Moin,
der Code ist richtig, kann es sein, dass deine Tabellenspalten keine Zahlen enthalten, dass du sie z.B. als VARCHAR definiert hast?
Mit Text kann man nicht rechnen. Lade die DB doch hoch, wenn sie zu groß ist, kannst du probieren, ob du sie mit folgendem Befehl

Code: Alles auswählen

CHECKPOINT DEFRAG
ausgeführt über Extras/SQL... und anschliessendes komplettes Schließen von OpenOffice komprimieren kannst.
Gruß R

Re: Alias addieren

Verfasst: Mi, 14.11.2018 18:11
von quotsi
1. Bei der eingebauten DB laß das as fort. Einfach das Alias in Anführungszeichen, dann wieder das Komma.
2. Nimm nicht das Alias beim Rechnen, sondern den kompletten Feldnamen wie zuvor
3. Müßte der Code nicht heißen (mit AS, wenns erforderlich ist):
SELECT "Auftrag"."M1", "Auftrag"."EZP1", "Auftrag"."M2", "Auftrag"."EZP2", "Auftrag"."M3", "Auftrag"."EZP3", ("Auftrag"."M1" + "Auftrag"."M2" + "Auftrag"."M3" AS "gsp") FROM "Auftrag", "Kunden Adressen" WHERE "Auftrag"."FSK" = "Kunden Adressen"."ID1"

Re: Alias addieren

Verfasst: Mi, 14.11.2018 18:40
von F3K Total
Hallo quotsi,
nein alles richtig, zumindest bei mir funktioniert die Abfrage:
SQL.PNG
SQL.PNG (39.63 KiB) 7088 mal betrachtet
... wenn die Spalten M1 bis EZP3 als ZAHLEN definiert sind. Ich habe für M... INTEGER und EZP... DECIMAL(10,2) gewählt
Gruß R

Re: Alias addieren

Verfasst: Mi, 14.11.2018 19:31
von hdh
hallo, bei mir funktioniert es auch aber sobald ich m1*EZP1+M2*EZP2 addieren will während m3 und ezp3 leer bleiben gibt es kein Ergebnis mehr.

zunächst mal danke für die schnelle Hilfe, welches Kriterium brauche ich für keine eingabe?


LG Hans Dieter Hahn

Re: Alias addieren

Verfasst: Mi, 14.11.2018 19:39
von RobertG
Hallo Hans-Dieter,

Code: Alles auswählen

SELECT "Auftrag"."M1", "Auftrag"."EZP1", "Auftrag"."M2", "Auftrag"."EZP2", "Auftrag"."M3", "Auftrag"."EZP3", 
IFNULL("M1" * "EZP1",0) + IFNULL("M2" * "EZP2",0) + IFNULL("M3" * "EZP3",0) AS "gsp" 
FROM "Auftrag", "Kunden Adressen" WHERE "Auftrag"."FSK" = "Kunden Adressen"."ID1"
Wenn eins der Ergebnisse leer ist, also NULL, dann ist das Gesamtergebnis auch NULL. Deshalb bei NULL stattdessen die Zahl '0' einsetzen. Wenn Du mit LO und Firebird arbeitest: IFNULL ist dort unbekannt, stattdessen COALESCE verwenden. Sytax ist gleich.

Gruß

Robert

Re: Alias addieren

Verfasst: Mi, 14.11.2018 20:00
von hdh
Hallo, es klappt alles wunderbar vielen herzlichen Dank für eure Hilfe.
LG Hans Dieter Hahn

Re: Alias addieren

Verfasst: Do, 15.11.2018 11:15
von quotsi
Noch mal ich:
Dass du math. Produkte addieren wolltest und keine einfachen Spalten, hatte ich überlesen.
ABER der direkte Aufruf der Aliasse zum Rechnen in derselben Konstruktion geht mit der eingebauten HSQLDB nicht. Da muss man (nach meiner Überprüfung) noch die Spaltennamen selber aufrufen bevor man dann dem Resultat ein Alias zuweisen kann (so wie in meinem vorigen Vorschlag).

Re: Alias addieren

Verfasst: Do, 15.11.2018 11:54
von hdh
hallo,
danke nochmal aber ich muß mir halt etwas anderes überlegen. Geht es eigentlich daß eine Abfrage nur einmal durchlaufen wird?
ich bekomme immer sehr grosse Tabellen bei einer einzigen Aufruf.

LG Hans Dieter Hahn

Re: Alias addieren

Verfasst: Do, 15.11.2018 13:24
von F3K Total
Moin,
was meinst du mit einmal durchlaufen?
Möchtest du nur einen Teil der Daten anzeigen, z.B. nur die Aufträge zu einer Kundennummer?
Da gibt es viele Möglichkeiten...du musst nur genauer beschreiben, was du erreichen möchtest, und, wie schon geschrieben, am Besten ein Beispieldokument hochladen.

Gruß R