Mika9: MySQL leere Tabelle

Hallo miteinander,

hab ein kleines Problem mit einer MySQL Abfrage. Ich möchte eine Abfrage über 2 Tabellen machen.

SELECT tabelle_a.spalte FROM tabelle_a, tabelle_b WHERE tabelle_a.id="$variable" AND tabelle_b.nr!=tabelle_a.id;

Klappt wunderbar, wenn allerdings Tabelle B keinen EIntrag hat (also leer ist) dann gibt die Abfrage nichts zurück. Ich möchte jedoch in diesem Fall das AND tabelle_b.nr!=tabelle_a.id ignorieren. Gibt es da eine Möglichkeit oder muss ich das über mehrere ABfragen machen?

Danke und Gruß
Mika9

  1. SELECT tabelle_a.spalte FROM tabelle_a, tabelle_b WHERE tabelle_a.id="$variable" AND tabelle_b.nr!=tabelle_a.id;

    ... wenn allerdings Tabelle B keinen EIntrag hat (also leer ist) dann gibt die Abfrage nichts zurück. Ich möchte jedoch in diesem Fall das AND tabelle_b.nr!=tabelle_a.id ignorieren. Gibt es da eine Möglichkeit oder muss ich das über mehrere ABfragen machen?

    Geht ...WHERE tabelle_a.id="$variable" AND (tabelle_b.nr!=tabelle_a.id OR tabelle_b.nr IS NULL) ?

    1. yo,

      Geht ...WHERE tabelle_a.id="$variable" AND (tabelle_b.nr!=tabelle_a.id OR tabelle_b.nr IS NULL) ?

      Ich würde einen Outer JOIN empfehlen, besonders wenn es um IS NULL bedingungen geht.

      Ilja

    2. Hallo nochmal,

      geht nicht wirklich.

      Die beiden untenstehenden müssten doch das selbe resultat liefern, wenn die Tabelle enduser_verbotene_kategorien leer ist. Das bezwecke ich zumindest damit.

      $sql="SELECT kategorien.id, kategorien.kategorie
      FROM kategorien, enduser_verbotene_kategorien
      WHERE kategorien.DEAKTIVIERT!="1"
      AND enduser_verbotene_kategorien.kategorie IS NULL";

      $sql="SELECT kategorien.id, kategorien.kategorie
      FROM kategorien
      WHERE kategorien.DEAKTIVIERT!="1"";

      Will aber net...

      1. geht nicht wirklich.

        Jetzt aber:
        SELECT a.id,a.name FROM a LEFT JOIN b ON a.id=b.id_a WHERE b.id IS NULL

        liefert alle a, die nicht in b eingetragen sind. Dein "deaktiviert" kannst du auch noch mit AND hintendranhängen.

  2. yo,

    SELECT tabelle_a.spalte FROM tabelle_a, tabelle_b WHERE tabelle_a.id="$variable" AND tabelle_b.nr!=tabelle_a.id;

    SELECT tabelle_a.spalte
    FROM tabelle_a LEFT JOIN tabelle_b ON (tabelle_b.nr!=tabelle_a.id)
    WHERE tabelle_a.id="$variable";

    Ilja

    1. Hallo,

      funktioniert leider nicht. Siehe mein anderer Beitrag ....

      1. yo,

        funktioniert leider nicht. Siehe mein anderer Beitrag ....

        falls sich das problem nocht nicht gelöst hat, dann schreibe doch nochmal was genau du suchst. und dabei ist es hilfreich, dass du die beiden tabellen mal mit beispieldatensätzen angibts und wie dabei die ergebnistabelle aussehen sollte (einmal mit und einmal ohne leere tabelle). das macht es uns leichter zu verstehen, was genau du haben willst.

        Ilja