AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

UNION-Problem

Ein Thema von NetSonic · begonnen am 26. Nov 2009 · letzter Beitrag vom 27. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

UNION-Problem

  Alt 26. Nov 2009, 18:01
Datenbank: PostgreSQL • Version: 8.3 • Zugriff über: ZeosLib
Ich habe ein Problem mit folgender SQL-Abfrage und finde einfach keinen Lösungsansatz:

SQL-Code:
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
Ich erhalte folgende Fehlermeldung: "fehlender Eintrag in FROM-Klausel für Tabelle "tblorder"!
Was könnte hier falsch sein? Bin für jede Idee dankbar!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: UNION-Problem

  Alt 26. Nov 2009, 18:23
Ich werd aus dem Statement nicht ganz schlau, was möchtest Du denn erreichen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: UNION-Problem

  Alt 26. Nov 2009, 19:11
Ich benötige "doppelte Datensätze", da ich mit Hilfe der SMDBGrid Datensätze gruppieren will: (siehe dazu hier)

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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: UNION-Problem

  Alt 26. Nov 2009, 19:16
Wie stellt sich das mit einem INNER JOIN dar (in anderer Notation)?
SQL-Code:
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
[edit] Sicherheitshalber Tabellenaliase eingefügt [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: UNION-Problem

  Alt 26. Nov 2009, 19:46
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!?

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?
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: UNION-Problem

  Alt 27. Nov 2009, 09:39
Hallo NetSonic,

auch wenn es nicht wirklich hilft, setze doch mal im zweiten SELECT alle Werte auf Null, außer den Lieferant.
SQL-Code:
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
Bei mir (ADS-Datenbank) funktioniert das.

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: UNION-Problem

  Alt 27. Nov 2009, 12:22
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:
SELECT DISTINCT
tblorder."ID",
tblorder."OrderDate",
tblorder."Lieferant",
'aAS "ArtikelNummer",
'aAS "ArtikelName",
'aAS "EK",
'aAS "VK",
1 as "flag"

FROM tblorder, tblpos

WHERE tblpos."OrderID" = tblorder."OrderID"

UNION ALL

SELECT DISTINCT
tblorder."OrderID",
tblpos."OrderDate",
'aAS "Lieferant",
tblpos."ArtikelNummer",
tblpos."ArtikelName",
tblpos."EK",
tblpos."VK",
2 as "flag"

FROM tblorder, tblpos

WHERE tblpos."OrderID" = tblorder."OrderID"

ORDER BY "OrderID", "flag"
Schon komisch - viel anders ist dieser SQL-Schnipsel ja auch nicht...
Naja, es funktioniert soweit und das war ja das Ziel.
Danke für Eure Hilfestellungen.

Gruß
NetSonic
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: UNION-Problem

  Alt 27. Nov 2009, 13:52
Hallo NetSonic,

bist Du Dir sicher das es im ersten SELECTtblorder."OrderDate" und im zweiten SELECTtblorder_pos."OrderDate" heißen muß ?

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#9

Re: UNION-Problem

  Alt 27. Nov 2009, 14:16
@Mike: Du hast recht, es war ein "Copy-and-Paste"-Fehler von mir. Habs nochmal editiert und korrigiert.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: UNION-Problem

  Alt 27. Nov 2009, 14:22
Durch die Verwendung von Tabellenaliasen könnte man die Abfrage auch lesbarer gestalten
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz