WHERE ---- Case (variable Parameterwerte)

MysterioJN

SQL-Guru
Beiträge
158
Hey Zusammen,

bestimmt für Euch ganz einfach, aber ich check es nicht ganz.
Wir haben im Front-End ein Dropdown-Feld, das wiederum inhaltlich mit einem Select Distinct gefüllt wird zzgl. dem Begriff 'Alle', der kein Begriff innerhalb der Spalte "aboname" in der Tabelle ist.

Wenn man gezielt einen Begriff auswählt, funktioniert meine Abfrage.
Wenn man aber alle Datensätze sehen möchte (Parameterwert = 'Alle'), kommt nix bei raus.

Code:
Select

blablabla

From

blablabla


WHERE

         tbl_abo.aboname =

              CASE
                    WHEN '[PARAMETER:Abo]' = '%Alle%'
                     THEN '[PARAMETER:Abo]'   ??? hier muss er dann alles anzeigen
                     ELSE '[PARAMETER:Abo]'    hier das ausgewählte was nicht "alle" ist - klappt!
                END



Hoffe man kann mein Anliegen verstehen :-/

Beste Grüße
Myst
 

Anhänge

  • Parameter-Dropdown.JPG
    Parameter-Dropdown.JPG
    31,4 KB · Aufrufe: 3
Zuletzt bearbeitet:
Werbung:
Hmm ok dann frag ich anders,

welches Zeichen verwendet man in einem Case wenn er einen kompletten Spalteninhalt z.B. "anzeigen" oder was auch immer soll?

Kenne nur den Stern.
 
Hä?

Code:
test=*# select * from foo;
 id |  data  
----+--------
  1 | data 1
  2 | data 2
  3 | data 3
(3 rows)

test=*# select *, case when data = 'data 2' then data else 'was anderes' end as "MyterioJN" from foo;
 id |  data  |  MyterioJN  
----+--------+-------------
  1 | data 1 | was anderes
  2 | data 2 | data 2
  3 | data 3 | was anderes
(3 rows)

Hilft das?
 
Also '[PARAMETER:Abo]' = '%Alle%' macht wenig Sinn, % ist ja nur bei LIKE sinnvoll. Oder steht noch mehr als nur "Alle" im Parameter?

Ich verstehe aber auch nicht was der CASE dann machen soll, mit tbl_abo.aboname =CASE [...] darf maximal ein Wert bei CASE zurück gegeben werden.

Ich denke du suchst eher sowas hier:
Code:
SELECT * FROM tabelle WHERE [PARAMETER:Abo] = 'Alle' OR aboname = [PARAMETER:Abo]
 
Hey Ukulele,

dank deinem Post hat es klick gemacht. Bzw. das System macht was es soll.
Logisch erscheint es mir aber dennoch nicht.

Vorher:
[PARAMETER:ABO] Inhalt: 'Alle' + Select DISTINCT blablabla FROM blabla
auf eine Tabelle --> Hat das 'Alle' nicht geklappt (da logischerweise ja nicht "Alle" in der Spaltentabelle steht sondern Abo A, Abo B, usw.)

Nun:
[PARAMETER:ABO] Inhalt: SELECT 'Alle' UNION SELECT DISTINCT blablabla FROM blabla
Nun akzeptiert das Parameterfeld schon einmal.

Dann noch den Hauptabfrageselect angepasst (dank deiner Hilfe):
SELECT blablabla FROM blabla WHERE ('[PARAMETER:ABO]' = ' Alle' OR abo.abo = '[PARAMETER:ABO]')

Es funktioniert!


ABER für mich bisher unlogisch: woher weiß der Select, dass er bei " WHERE ('[PARAMETER:ABO]' = ' Alle' " auch wirklich alle anzeigen soll?
 
Werbung:
Wenn dein Parameter = 'Alle' ist verhält sich das wie 1=1 und da 1=1 immer wahr ist wird jede Zeile als wahr zurück gegeben. Die Bedingung ist also unabhängig vom Inhalt der Zeile.
 
Zurück
Oben