Seite 1 von 1

Abfragebedingung gesucht

Verfasst: Fr 23. Jan 2015, 23:42
von Vom_Lande
Hallo Leute,

ich will eine Abfrage ungefähr so¹ gestalten:

Code: Alles auswählen

IF "Filtertabelle"."Filter1" IS NOT NULL THEN
SELECT "Tabelle_1"."Spalte_1" || ' ' || "Tabelle_1"."Spalte_2" FROM "Tabelle_1"
ELSE
SELECT "Tabelle_2"."Spalte1" || ' ' || "Tabelle_2"."Spalte2" FROM "Tabelle_2"
END IF
Ist dieses Vorhaben ohne Makros zu lösen?
Wenn "ja" wie würde die Lösung lauten?


MfG
Andy

__________________________________
¹Sehr vereinfaches Beispiel der SELECT-Abfrage

Re: Abfragebedingung gesucht

Verfasst: Sa 24. Jan 2015, 01:26
von F3K Total
Hi,
unschön, da nur i.O. wenn keine Werte in Spalte 1 und 2 doppelt vorkommen:

Code: Alles auswählen

SELECT DISTINCT CASEWHEN("Filtertabelle"."Filter1" IS NULL,X."Spalte1"||' '||X."Spalte2",Y."Spalte1"||' '||Y."Spalte2") FROM "Filtertabelle", "Tabelle1" X, "Tabelle2" Y
Besser wäre es, beide Tabellen in einer Tabelle zusammenzufassen und eine Unterscheidungsspalte z.B. "U" Integer 1 oder 2 zuzufügen, dann wäre die Abfrage:

Code: Alles auswählen

SELECT "Tabelle1"."Spalte1"||' '||"Tabelle1"."Spalte2" FROM "Filtertabelle", "Tabelle1" WHERE "U" = CASEWHEN("Filtertabelle"."Filter1" IS NULL,1,2)
HTH R

Re: Abfragebedingung gesucht

Verfasst: So 25. Jan 2015, 13:06
von Vom_Lande
Hallo F3K Total,


danke für deine Antwort. Leider kann ich beide Code(Beispiele) nicht verwnden:

Code 1
Die Werte in den Spalten 1 und 2 kommen mehrfach vor.

Code 2
Beide Tabellen in einer zu vereinen ist leider nicht möglich, da ich diese Tabellen in den Eingabeformularen als Grundlage für Listenfelder verwende.


Mal schauen wie ich diese Datenbank anonymisieren kann ohne den eigentlichen Sinn und Zweck dieser Datenbank der Öffentlichkeit preiszugeben...


MfG
Andy

Re: Abfragebedingung gesucht

Verfasst: So 25. Jan 2015, 13:32
von F3K Total
Vom_Lande hat geschrieben:Beide Tabellen in einer zu vereinen ist leider nicht möglich, da ich diese Tabellen in den Eingabeformularen als Grundlage für Listenfelder verwende.
Und? Du kannst Listenfelder statt mit einer Tabelle genauso gut per SQL füllen und dann eben

Code: Alles auswählen

... WHERE U = 1
in das erste und

Code: Alles auswählen

... WHERE U = 2
in das zweite schreiben
Gruß R