![]() |
Datenbank: Paradox • Zugriff über: ODBX
Union Select und group by Problem
Ich habe eine Tabelle in der gibt es 14 Felder für eine Leistungsverzeichnisnummer,14 Felder für eine
Bezeicchnung,14 Felder für Einheit und 14 Felder füt Menge. Jeder Datensatz steht für einen Tag in einem Bautagebuch.Ich arbeite das erste Mal mit Query und SQL-Abfragen. In dem Programm soll es eine Seite geben die mir die Leistungen addiert.
Delphi-Quellcode:
Mit diesen Code fülle ich ein Query.Ich bekomme es aber nicht hin,dass er mir die Bezeichnung(be)
with Query1.SQL do
begin Clear; Add('SELECT lvn1,be1,ein1,me1'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn2,be2,ein2,me2'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn3,be3,ein3,me3'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn4,be4,ein4,me4'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn5,be5,ein5,me5'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn6,be6,ein6,me6'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn7,be7,ein7,me7'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn8,be8,ein8,me8'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn9,be9,ein9,me9'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn10,be10,ein10,me10'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn11,be11,ein11,me11'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn12,be12,ein12,me12'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn13,be13,ein13,me13'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn14,be14,ein14,me14'); Add('FROM "' + Datei + '" '); end; Query1.Open; gruppiert und von der Menge(me)die summe bildet. |
Re: Union Select und group by Problem
Villeicht solltest du mit Aliasen dafür sorgen, dass er auch was zu gruppieren hat
SQL-Code:
SELECT
lvn1 as lvn, be1 as b1, ein1 as ein, me1 as m3 UNION SELECT lvn2 as lvn, be2 as be, ein2 as ein, me2 as me ... |
Re: Union Select und group by Problem
Jetzt bekomme ich die Fehlermeldung "ungültiger Feldname".
Delphi-Quellcode:
Und wie kann ich noch die Summen berechnen?Add('SELECT lvn1 as Nummer,be1 as Be,ein1 as Einheit,me1 as Menge'); Add('FROM "' + Datei + '" '); . . . Add('union SELECT lvn14 as Nummer,be14 as Be,ein14 as Einheit,me14 as Menge'); Add('FROM "' + Datei + '" '); add('group by Be'); |
Re: Union Select und group by Problem
- in eine eigene (temporäre) tabelle überführen und dann mit group dran
- ein view erzeugen und darüber mit group aber das geht mE nicht mit paradox |
Re: Union Select und group by Problem
Hallo,
die Alias-Namen des ersten SELECT gelten für alle anderen. Du darfst sie also nur beim ersten SELECT aufführen. Zur Gruppierung und Summierung kannst du die UNION-Konstruktion als Tabelle für einen weiteren SELECT benutzen:
SQL-Code:
Vorausgesetzt, das geht bei Paradox.
SELECT Be, SUM(Menge) FROM
( SELECT ... UNION ... SELECT ) GROUP BY Be; Gruß Jürgen |
Re: Union Select und group by Problem
Wie gesagt,ich habe noch keine Ahnung von SQL-Abfragen.Habe schon nach ähnlichen Quelltext
gesucht um die Abfrage zu verstehen. Habe meinen Quellcode abgeändert.
Delphi-Quellcode:
Und bekomme jetzt als Fehlermeldung
with Query1.SQL do
begin Clear; add('Select Bezeichnung,Sum(Menge) from'); Add('(SELECT lvn1 as Nummer,be1 as Bezeichnung,ein1 as Einheit,me1 as Menge'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn2,be2,ein2,me2'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn3,be3,ein3,me3'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn4,be4,ein4,me4'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn5,be5,ein5,me5'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn6,be6,ein6,me6'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn7,be7,ein7,me7'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn8,be8,ein8,me8'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn9,be9,ein9,me9'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn10,be10,ein10,me10'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn11,be11,ein11,me11'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn12,be12,ein12,me12'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn13,be13,ein13,me13'); Add('FROM "' + Datei + '" '); Add('union SELECT lvn14,be14,ein14,me14'); Add('FROM "' + Datei + '" )'); add('group by Bezeichnung'); Ungültiges Schlüsselwort Symbol-String:SELECT |
Re: Union Select und group by Problem
Das deutet darauf hin, dass diese Konstruktion tatsächlich unter Paradox mit ODBX nicht zulässig ist (vorausgesetzt, du hast die Klammern richtig gesetzt, aber es sieht eigentlich danach aus).
Dann möchte ich den Vorschlag von Sir Rufo aufgreifen, das Ergebnis der UNION-Konstruktion in einer temp. Tabelle zu speichern und diese auszuwerten. Brauchst du eigentlich bei deinen Tabellen die ständigen Gänsefüßchen? "Ohne" wäre es übersichtlicher. Siehe auch ![]() Gruß Jürgen |
Re: Union Select und group by Problem
Wie lege ich denn eine virtuelle Tabelle an?
|
Re: Union Select und group by Problem
Ist zwar keine Lösung für dein Problem, aber lade doch das Skript aus einer Datei ...
Datei "MeinSelect.sql":
Code:
und dann
SELECT lvn1 as Nummer,be1 as Bezeichnung,ein1 as Einheit,me1 as Menge
FROM "{Datei}" union SELECT lvn2,be2,ein2,me2 FROM "{Datei}" union SELECT lvn3,be3,ein3,me3 FROM "{Datei}"
Delphi-Quellcode:
Wie du siehst, verkürzt das den Quelltext ungemein, und du kannst den Select ändern,
SQL.LoadFromFile( 'MeinSelect.sql' );
SQL.Text := StringReplace( SQL.Text, '{Datei}', Datei, [ rfReplaceAll ] ); ohne ständiges Neucompilieren. |
Re: Union Select und group by Problem
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz