![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: UIB
UIB Dataset und UNION
Hallo
habe ein kleines Problemchen mit einer UNION Abfrage Ich glaube aber nicht dass die UIB Komponenten schuld sind, da es im SQL Manager for Interbase/Firebird auch nicht funktioniert. Da scheint es im SQL Statement an Hund zu geben, den ich übersehe.
SQL-Code:
SELECT 0 AS ID, '' AS KUERZEL
UNION ALL SELECT ADRESSENID AS ID, ADR_KUERZEL AS KUERZEL FROM ADRESSEN WHERE AKTUELL = 1 AND ADR_KUERZEL != '' AND ADR_KUERZEL IS NOT NULL Erreichen möchte ich, dass ich auch ein Ergebnis mit ID = 0 und '' als Kuerzel bekomme. Als Fehlermeldung wird mir ausgespuckt: Zitat:
|
Re: UIB Dataset und UNION
Ersetz mal != durch <>
|
Re: UIB Dataset und UNION
Das bringt leider nichts.
Die einzelne Unterabfrage
SQL-Code:
Funktioniert ja auch, denke eher dass es was mit dem Union zu tun hat, bzw. des ersten Selects, das funktioniert nämlich auch nicht alleine wie ich eben feststellen musste...
SELECT ADRESSENID AS ID, ADR_KUERZEL AS KUERZEL
FROM ADRESSEN WHERE AKTUELL = 1 AND ADR_KUERZEL != '' AND ADR_KUERZEL IS NOT NULL Wenn ich nur
SQL-Code:
ausführen möchte, schreibt er mir
SELECT 0 AS ID, '' AS KUERZEL
Zitat:
|
Re: UIB Dataset und UNION
Und wenn Du vor die UNION-Zeile noch ein FROM Adressen einfügst?
|
Re: UIB Dataset und UNION
Wenn ich das mache, funktionieren beide Abfragen für sich alleine gut. Mit Union bekomme ich aber Fehlermeldung aus dem ersten Post.
|
Re: UIB Dataset und UNION
Hi,
IMHO müsste die erste Zeile so lauten:
SQL-Code:
Frank
SELECT 0 AS ID, '' AS KUERZEL from rdb$database ...
|
Re: UIB Dataset und UNION
habe es mal probiert, man muss noch casten:
SQL-Code:
[EDIT] du solltest natürlich das casting den Felddefinitionen deiner Tabelle Adressen anpassen [/EDIT]
SELECT cast(0 as integer) AS ID, cast('' as varchar(40)) AS kuerzel from rdb$database
Cu, Frank |
Re: UIB Dataset und UNION
und für was steht rdb$database? Ändern tuts jedenfalls nix am Fehler.
Habe es folgendermaßen umgebaut
SQL-Code:
SELECT DISTINCT 0 AS ID, '' AS KUERZEL FROM RDB$DATABASE
UNION SELECT ADRESSENID AS ID, ADR_KUERZEL AS KUERZEL FROM ADRESSSEN WHERE AKTUELL = 1 AND ADR_KUERZEL != '' AND ADR_KUERZEL IS NOT NULL /Nachtrag: Aufs Casting ists angekommen :) |
Re: UIB Dataset und UNION
Zitat:
Union verbindet mehrere Selects, und der erste select muss natürlich vollständig sein. Mit dem cast (siehe Beitrag über deinem) sollte es gehen. [EDIT] ich denke, so....
SQL-Code:
[/EDIT]
SELECT cast(0 as integer) AS ID, cast('' as varchar(1)) AS KUERZEL FROM RDB$DATABASE
UNION ALL SELECT ADRESSENID AS ID, ADR_KUERZEL AS KUERZEL FROM ADRESSSEN WHERE AKTUELL = 1 AND ADR_KUERZEL <> '' AND ADR_KUERZEL IS NOT NULL Cu, Frank |
Re: UIB Dataset und UNION
Super so geht es auch :) Danke
Jetzt wollt ichs nur noch sortieren und habe unten ein ORDER BY ADR_KUERZEL ASC angefügt... irgendwie mag das nicht. |
Re: UIB Dataset und UNION
... probier mal order by 2
Frank |
Re: UIB Dataset und UNION
Dann pack doch die gesamte bisherige Abfrage in ein neues Select und sortiere diese Rückgabemenge:
SQL-Code:
Select * from (... deine Abfrage ...) order by (deine Spalten)
|
Re: UIB Dataset und UNION
Ok danke das funktioniert ... ich mein das order by 2
Würde ich das gesamte einpacken würde sich ja das Ergebnis vom ersten select ja mitsortieren was es ja nicht soll. |
Re: UIB Dataset und UNION
Ach so, ich hatte das so verstanden, dass du alles am Ende in einer sortierten Liste haben willst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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