Select nach if

fink-x

Mitglied
Hallo liebes Forum,

ich habe ein Problem mit mySQL und zwar habe ich ein prob mit einer Abfrage. Ich will zuerst eine IF Abfrage machen. wenn diese erfüllt ist will ich eine Select anweisung machen und wenn sie nicht erfüllt wurde soll eine andere kommen...ich weiß es hört sich dämlich an aber ich weiß nicht wei ich es anders erklären soll. hier mal wie ich meine:
Code:
mysql> select name, auth, 
        if(auth = 'a', 'erste Abfrage', 'zweite Abfrag') 
        as Admin 
        from t_user;
klar...das klappt so nicht, ich weiß aber ich will halt erreichen das er ein Select auf eine andere Tabelle macht wenn 'auth = a' und dort alles ausaugibt. Und wenn 'auth <> a' ist soll er nur bestimmte werte ausgeben.
Meine Frage ist...Wie kann ich es schaffen das er nach einer IF Bedingung noch einen Select ausführt?

Danke fink-x
 
Möglicherweise lässt sich da mit einem left join tricksen. Vielleicht gibt es aber auch elegantere Ansätze.

Hier mal ein Beispiel:
Code:
select
  tab1.feld1,
  tab1.feld2,
  if(tab2.id is null, tab3.id,tab2.id) as id,
  if(tab2.id is null, tab3.feld,tab2.feld) as feld
from tab1
left join tab2
  on tab1.id=tab2.tab1id
    and tab1.feld1='deineBedingung'
left join tab3
  on tab1.id=tab3.tab1id
    and tab1.feld1!='deineBedingung'
Vielleicht gibt Dir das ja einen Ansatz.

Gruß hpvw
 
danke erstmal für deine Antwort. Leider habe ich es auf deine Weise nicht geschaft.
Habe mich jetzt entschlossen das ganze über diese Query laufen zu lassen. Das ist zwar nicht so elegant aber es funktioniert.
Code:
SELECT gal. *
  FROM t_gallery AS gal
  RIGHT JOIN t_user AS usr ON usr.auth = 'u' AND usr.id = 1
  WHERE gal.user_id = 1
UNION
SELECT gal. *
  FROM t_gallery AS gal
  RIGHT JOIN t_user AS usr ON usr.auth = 'a' AND usr.id = 1;
was mich ein bisschen stört, ist das er hier bei immer eine Spalte mit NULL Werten ausgibt.

Gruß fink-x
 
Zurück