Antworten auf deine Fragen:
Neues Thema erstellen

MYSQL | else/if

MasterT

Nicht mehr ganz neu hier

Hallo,
ich möchte beim Abruf der MySQL Datenbank prüfen ob das gelieferte Ergebniss NULL ist und wenn dann die Tabelle Wechseln.

Prinzip:
Wenn `t2`.`username` gleich 0 dann wähle stattdessen `t3`.`username`

Hier habe ich es schon so versucht zu lösen, was aber nicht funktioniert.

PHP:
    $sql = mysql_query( "
    SELECT DISTINCT
        `t1`.`datum`,
        `t1`.`uhrzeit`,
        `t1`.`eingang`,
        `t1`.`ausgang`,
        `t1`.`standdanach`,
        `t1`.`lieferschein`,
        `t1`.`kennzeichen`,
        `t2`.`username` AS username1,
        `t3`.`username` AS username2
    FROM    
        `".$s_lager."_artikellog` AS t1,
        `benutzer` AS t2,
        `benutzer_geloescht` AS t3
    WHERE 
        `t1`.`systemid` = '".$id."' AND
        (
            `t1`.`verantwortlicher` = `t2`.`id`  OR
            `t1`.`verantwortlicher` = `t3`.`id`
        ) AND
        `t1`.`datum`
    BETWEEN 
        '2013-".$monat2."-".$tag2."' AND 
        '2013-".$monat."-".$tag."'
    ORDER BY 
        `t1`.datum DESC, 
        `t1`.uhrzeit DESC") or die(mysql_error());
Freundliche Grüße
 

MasterT

Nicht mehr ganz neu hier

AW: MYSQL | else/if

Ich lese mich da gerade ein, aber ich weiß nicht wie ich das auf mein Problem anwenden soll
 

Duddle

Posting-Frequenz: 14µHz

AW: MYSQL | else/if

Woran hängst du?
Die Beispiele sind doch sehr eindeutig. Du solltest deine Spezifikation damit 1:1 übersetzen können.



Duddle
 
G

Ghaengi

Guest

AW: MYSQL | else/if

Wie Duddle schon sagte, kannst du es mit einem einfachen IF() lösen, oder aber, wenn du direkt auf einen NULL-Wert überprüfen willst, sähe das dann etwa so aus bei deinem Statement:

PHP:
 $sql = mysql_query( "
    SELECT DISTINCT
        `t1`.`datum`,
        `t1`.`uhrzeit`,
        `t1`.`eingang`,
        `t1`.`ausgang`,
        `t1`.`standdanach`,
        `t1`.`lieferschein`,
        `t1`.`kennzeichen`,
         IFNULL( `t2`.`username` , `t3`.`username` ) AS username
    FROM    
        `".$s_lager."_artikellog` AS t1,
        `benutzer` AS t2,
        `benutzer_geloescht` AS t3
    WHERE 
        `t1`.`systemid` = '".$id."' AND
        (
            `t1`.`verantwortlicher` = `t2`.`id`  OR
            `t1`.`verantwortlicher` = `t3`.`id`
        ) AND
        `t1`.`datum`
    BETWEEN 
        '2013-".$monat2."-".$tag2."' AND 
        '2013-".$monat."-".$tag."'
    ORDER BY 
        `t1`.datum DESC, 
        `t1`.uhrzeit DESC") or die(mysql_error());

Wenn dein Username "`t2`.`username`" nicht NULL ist, wird der Username genommen, ansonsten wird der Username aus "`t3`.`username`" herangezogen.

Wenn du jedoch nicht nach NULL sondern wirklich nach dem Wert 0 überprüfen willst, solltest du das mit einem normalen IF machen:

PHP:
 $sql = mysql_query( "
    SELECT DISTINCT
        `t1`.`datum`,
        `t1`.`uhrzeit`,
        `t1`.`eingang`,
        `t1`.`ausgang`,
        `t1`.`standdanach`,
        `t1`.`lieferschein`,
        `t1`.`kennzeichen`,
         IF( `t2`.`username` = 0, 
             `t3`.`username`,
             `t2`.`username`) AS username
    FROM    
        `".$s_lager."_artikellog` AS t1,
        `benutzer` AS t2,
        `benutzer_geloescht` AS t3
    WHERE 
        `t1`.`systemid` = '".$id."' AND
        (
            `t1`.`verantwortlicher` = `t2`.`id`  OR
            `t1`.`verantwortlicher` = `t3`.`id`
        ) AND
        `t1`.`datum`
    BETWEEN 
        '2013-".$monat2."-".$tag2."' AND 
        '2013-".$monat."-".$tag."'
    ORDER BY 
        `t1`.datum DESC, 
        `t1`.uhrzeit DESC") or die(mysql_error());

Hoffe das hilft dir so vielleicht weiter.
 

MasterT

Nicht mehr ganz neu hier

AW: MYSQL | else/if

@Ghaengi
Danke für dein anschauliches Beispiel, ich werde es gleich testen und berichten
 
Zuletzt bearbeitet:

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: MYSQL | else/if

Also du verwirrst mich MasterT.
möchtest du nun wissen ob t2.username
a) null
b) 0
oder c) false
ist?
 

MasterT

Nicht mehr ganz neu hier

AW: MYSQL | else/if

@Ghaengi
Danke, das hat mir schon weiter geholfen, nur ist jetzt in der WHERE clausel das Problem, da er jetzt nicht vollständig alle Artikel auf der Tabelle läd, da ich ihm ja sagen muss aus welcher tabelle er die ID vergleichen soll. Meine "Lösung" funktioniert da nicht

PHP:
    $sql = mysql_query( "
    SELECT DISTINCT
        `t1`.`datum`,
        `t1`.`uhrzeit`,
        `t1`.`eingang`,
        `t1`.`ausgang`,
        `t1`.`standdanach`,
        `t1`.`lieferschein`,
        `t1`.`kennzeichen`,
        IFNULL( `t2`.`username` , `t3`.`username` ) AS username 
    FROM    
        `".$s_lager."_artikellog` AS t1,
        `benutzer` AS t2,
        `benutzer_geloescht` AS t3
    WHERE 
        `t1`.`systemid` = '".$id."' AND
        ( 
            `t1`.`verantwortlicher` = `t2`.`id`  OR <!-- Hier ist das Problem
            `t1`.`verantwortlicher` = `t3`.`id`
        ) AND 
        `t1`.`datum`
    BETWEEN 
        '2013-".$monat2."-".$tag2."' AND 
        '2013-".$monat."-".$tag."'
    ORDER BY 
        `t1`.datum DESC, 
        `t1`.uhrzeit DESC") or die(mysql_error());
@Afr0kalypse
Ich will wissen ob die Zeile mit der ID vorhanden ist also NULL

Nachtrag:
Also ich möchte das wenn in `t2` keine Zeile mit der ID gefunden wird in der WHERE clausel dann `t1`.`verantwortlicher` = `t3`.`id` verglichen wird und anders rum
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben