So wählen Sie einige Zeilen ein, falls eine Bedingung wahr ist, und andere, wenn eine andere Bedingung erfüllt ist?

Möchte ich bestimmte Zeilen aus einer Tabelle, wenn eine bestimmte Bedingung wahr ist, wird dann, wenn eine andere Bedingung erfüllt ist zu wählen, einige andere und anderes (Ende) wählen einige andere Zeilen. Das Hauptproblem ist, dass ich einfügen möchte, einen parameter von der Kommandozeile aus so:

if exists(select a.* from a
left join b on a.id=b.id
where b.id=:MY_PARAMETER)
else if exists
(select c.* from c where c.id=:Another_Parameter)
else
(select * from b)

Ich verstehe, dass ich mache etwas falsch, aber ich kann nicht herausfinden, was. Ich habe versucht, mit FALL-Dann, aber ich konnte nicht einen Weg finden, um sich an die Lösung. Irgendeine Idee? Dank

PS: ich habe einige andere Beiträge über so etwas wie dieses, aber als ich erklärte, ich habe Schwierigkeiten, die durch diese.

<===Bearbeitet=====>

Gehofft, ich bin die Klärung etwas:

select
case when b.id=6
then (select * from a)
else (select a.* from a join b
on b.aid=a.aid)
end
from a join b
on b.aid=a.aid
join c
on b.id=c.bid
where b.id=:num

In diesem Fall das problem ist, dass es nicht möglich ist, um wieder mehr als einen Wert in der CASE-Anweisung.

  • Meinst du eine union-Abfrage? e.g Select Id,Beschreibung Von Ein, Wo somecondition union Select Id,Beschreibung Von B, Wo Someothercondition
  • Nein, ich möchte abzurufende Zeilen, wenn eine bestimmte Bedingung wahr ist, zum Beispiel, wenn die MY_PARAMETER=10 und wenn MY_PARAMETER=20 zu wählen, einige andere Zeilen und wenn MY_PARAMETER hat einen anderen Wert zu wählen Sie einige neue Zeilen. Ich will nicht das Zusammenführen der Ergebnisse.
  • Sie können gehen für plsql, und erstellen Sie eine eigene Abfrage mit der übergebenen parameter und öffnen Sie Sie mit einem refcursor.
  • Vielen Dank für die Beantwortung, ich bin neu in pl/sql, so möchte ich dies lösen über sql, aber wenn Sie mir helfen können, dies zu tun durch pl/sql wäre ich sehr dankbar 🙂
  • Also Nein, du meinst eine uinion Abfrage dann? ...
  • Nun, ich wusste nicht, wie das problem zu lösen, das ist, warum ich nicht bestätigte Ihre Frage. Trotzdem danke für deine Unterstützung 🙂

InformationsquelleAutor Noah Martin | 2013-08-19
Schreibe einen Kommentar