Gibts ein IF in nem SELECT Statemen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gibts ein IF in nem SELECT Statemen?

    Hallo allerseits. Um mein Problem zu veranschaulichen mal ein kleines Beispiel anhand einer Bücherei.

    Zwei Tabellen:
    - User
    - User_Bücher

    Nun habe ich eine Suchmaske, die sowohl die Userdaten, also auch die Bücher, die der User ausgeliehen hat enthällt.

    Wenn ich nun alle User haben will, die Meier heissen und die Bibel ausgeliehen haben, lautet mein Select...

    PHP-Code:
    SELECT a.*
    FROM db_user adb_user_buecher b
    WHERE 1 
    AND b.user_id a.user_id
    AND a.nachname 'Meier'
    AND b.buch 'Bibel' 
    Funktioniert auch alles Prima. Auch wenn ich nur nach 'Meier' suche.

    Nun mein Problem:
    Der Eintrag in der Tabelle db_user_buecher wird nur angelegt, wenn der User überhaupt mal ein Buch ausgeliehen hat. Ist er nur registriert, gibt dort auch kein Eintrag für ihn.
    Somit findet 'WHERE b.user_id = a.user_id' nichts - auch wenn ich nur nach den Namen suche.

    Gibt es eine Mögichkeit die Tabellen nur zu verknüpfen, wenn es auch einen Eintrag gibt?
    Quasi so was...

    PHP-Code:
    SELECT a.*
    FROM db_user adb_user_buecher b
    WHERE 1
    if(b.user_id a.user_id){ 
    AND 
    b.user_id a.user_id
    AND b.buch 'Bibel'
    }
    AND 
    a.nachname 'Meier' 
    Bin gespannt... :-)

    Dank & Grüße,
    Andi

  • #2
    Informiere dich mal über JOINS - in deinem Fall benötigst du LEFT JOIN


    Bsp:

    Code:
    SELECT u.name, b.titel
    
    FROM user u 
    
    LEFT JOIN buch b 
    ON b.user_id = u.user_id
    
    WHERE 
    u.name = 'meier'

    PS: Du machst bei dir auch schon einen JOIN, allerdings komplett im WHERE - mit IF hat das ganze übrigens nichts zu tun

    Kommentar


    • #3
      Ja sehr sehr geil!!!

      Ich habe mich immer schon gefragt was LEFT JOIN genau macht. Dachte es währe nur ne andere Schreibweise für meinen Weg mit dem WHERE.

      1000 Dank

      Kommentar


      • #4
        Super, jetzt klappt das auch mit dem Select über 5 Tabellen und der Suche in über 80 Feldern.
        Danke noch mal!

        Kommentar

        Lädt...
        X