![]() |
Datenbank: PostgreSQL • Version: 8.3 • Zugriff über: ZeosLib
UNION-Problem
Ich habe ein Problem mit folgender SQL-Abfrage und finde einfach keinen Lösungsansatz: :(
SQL-Code:
Ich erhalte folgende Fehlermeldung: "fehlender Eintrag in FROM-Klausel für Tabelle "tblorder"!
SELECT
tblorder."ID", tblorder."BestDatum", tblorder."Lieferant", tblpos."ArtikelNummer", tblpos."ArtikelName", tblpos."EK", tblpos."VK", tblpos."Anzahl", 2 as flag FROM public.tblorder, public.tblpos WHERE tblorder."ID" = tblpos."ID" UNION ALL SELECT DISTINCT tblorder."ID", tblorder."BestDatum", tblorder."Lieferant", tblpos."ArtikelNummer", tblpos."ArtikelName", tblpos."EK", tblpos."VK", tblpos."Anzahl", 1 as flag FROM public.tblorder, public.tblpos WHERE tblorder."ID" = tblpos."ID" ORDER BY tblorder."Lieferant", flag Was könnte hier falsch sein? Bin für jede Idee dankbar! |
Re: UNION-Problem
Ich werd aus dem Statement nicht ganz schlau, was möchtest Du denn erreichen?
|
Re: UNION-Problem
Ich benötige "doppelte Datensätze", da ich mit Hilfe der SMDBGrid Datensätze gruppieren will: (siehe dazu
![]() Und das kann ich ja nur durch die Verwendung von UNION erreichen. Und die "flags" benötige ich, um zu unterscheiden, ob es sich um einen "Datensatz" oder eine "Gruppierung" handelt. Jedenfalls ist das mein aktueller Stand. |
Re: UNION-Problem
Wie stellt sich das mit einem INNER JOIN dar (in anderer Notation)?
SQL-Code:
[edit] Sicherheitshalber Tabellenaliase eingefügt [/edit]
SELECT
tb."ID", tb."BestDatum", tb."Lieferant", tp."ArtikelNummer", tp."ArtikelName", tp."EK", tp."VK", tp."Anzahl", 2 as flag FROM public.tblorder tb JOIN public.tblpos tp ON tb."ID" = tp."ID" UNION ALL SELECT DISTINCT tb."ID", tb."BestDatum", tb."Lieferant", tp."ArtikelNummer", tp."ArtikelName", tp."EK", tp."VK", tp."Anzahl", 1 as flag FROM public.tblorder tb JOIN public.tblpos tp ON tb."ID" = tp."ID" ORDER BY tb."Lieferant", flag |
Re: UNION-Problem
Das habe ich in Deiner Variante noch nicht probiert. Aber ich werde es morgen früh gleich einmal versuchen und mich dann wieder dazu äußern. Vielleicht mit einem positiven Ergebnis!? :-D
Danke erstmal für Deine Mühe... Gruß NetSonic EDIT: Aaaaalsoooo: Mit dieser Variante bekomme ich folgende Meldung: "fehlender Eintrag in FROM-Klausel für Tabelle tb"; Im Prinzip also der gleiche Fehler wie vorher. Aber verstehen kann ich diese Meldung absolut nicht! Wer kann mir da nochmal bitte Hilfestellung geben? |
Re: UNION-Problem
Hallo NetSonic,
auch wenn es nicht wirklich hilft, setze doch mal im zweiten SELECT alle Werte auf Null, außer den Lieferant.
SQL-Code:
Bei mir (ADS-Datenbank) funktioniert das.
SELECT
tblorder."ID", tblorder."BestDatum", tblorder."Lieferant", tblpos."ArtikelNummer", tblpos."ArtikelName", tblpos."EK", tblpos."VK", tblpos."Anzahl", 2 as flag FROM public.tblorder, public.tblpos WHERE tblorder."ID" = tblpos."ID" UNION ALL SELECT DISTINCT 0 as ID, 0 as BestDatum, tblorder."Lieferant", 0 as ArtikelNummer, 0 as ArtikelName, 0 as EK, 0 as VK, 0 as Anzahl, 1 as flag FROM public.tblorder, public.tblpos WHERE tblorder."ID" = tblpos."ID" ORDER BY tblorder."Lieferant", flag Mike |
Re: UNION-Problem
Nein, das funktioniert ebenfalls nicht. Ich bekomme weiterhin diese Fehlermeldung. Ich werde wohl damit anfangen müssen, mir diese Gruppierung mit einer anderen Komponente per Hand "zusammenzubauen".
EDIT: Vielleicht hatte ich doch gerade noch einen "Geistesblitz"... Ich muss da noch einmal etwas ausprobieren! Jupp, mit diesem Code bekomme ich den Fehler nicht mehr:
SQL-Code:
Schon komisch - viel anders ist dieser SQL-Schnipsel ja auch nicht... :?
SELECT DISTINCT
tblorder."ID", tblorder."OrderDate", tblorder."Lieferant", 'a' AS "ArtikelNummer", 'a' AS "ArtikelName", 'a' AS "EK", 'a' AS "VK", 1 as "flag" FROM tblorder, tblpos WHERE tblpos."OrderID" = tblorder."OrderID" UNION ALL SELECT DISTINCT tblorder."OrderID", tblpos."OrderDate", 'a' AS "Lieferant", tblpos."ArtikelNummer", tblpos."ArtikelName", tblpos."EK", tblpos."VK", 2 as "flag" FROM tblorder, tblpos WHERE tblpos."OrderID" = tblorder."OrderID" ORDER BY "OrderID", "flag" Naja, es funktioniert soweit und das war ja das Ziel. Danke für Eure Hilfestellungen. Gruß NetSonic |
Re: UNION-Problem
Hallo NetSonic,
bist Du Dir sicher das es im ersten SELECT
SQL-Code:
und im zweiten SELECT
tblorder."OrderDate"
SQL-Code:
heißen muß ?
tblorder_pos."OrderDate"
Mike |
Re: UNION-Problem
@Mike: Du hast recht, es war ein "Copy-and-Paste"-Fehler von mir. Habs nochmal editiert und korrigiert.
|
Re: UNION-Problem
Durch die Verwendung von Tabellenaliasen könnte man die Abfrage auch lesbarer gestalten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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-2025 by Thomas Breitkreuz