Wählen Sie mehrere Tabellen aus, wenn eine Tabelle in MySQL leer ist

7

Ich versuche es zu tun

%Vor%

Es gibt jedoch nichts zurück, wenn eine der Tabellen leer ist. Wie mache ich es so, dass es "a" zurückgibt, auch wenn der andere leer ist?

    
Alex 03.07.2010, 11:02
quelle

5 Antworten

19

Die Verwendung von zwei Tabellen in der from -Klausel entspricht funktionell einer cross join :

%Vor%

Dies gibt eine Reihe von A für jede Zeile in B zurück. Wenn B leer ist, ist das Ergebnis auch leer. Sie können das beheben, indem Sie left join verwenden. Mit left join können Sie Zeilen zurückgeben, auch wenn eine der Tabellen leer ist. Zum Beispiel:

%Vor%

Da die Bedingung 1=1 immer wahr ist, ist dies genau wie in cross join , außer dass sie auch für leere Tabellen funktioniert.

    
Andomar 03.07.2010, 11:08
quelle
1
%Vor%

Gibt alles von einer geraden zurück, wenn b leer ist.

    
duraz0rz 03.07.2010 11:09
quelle
1

Sie sollten einen linken Join machen.

So

%Vor%

Dann erhalten Sie die Zeilen in A und die entsprechende Zeile in B, falls vorhanden.

    
Bruno Costa 03.07.2010 11:10
quelle
1
%Vor%

in dieser Beispiel-ID ist nur Beispielname für Join-Schlüssel

    
Miroslav Asenov 03.07.2010 11:31
quelle
0

Die oben erwähnte Abfrage zeigt den Join beider Tabellen an, wenn ein contain 2 record und b 7 records enthält, zeigt es 7 * 2 = 14 records an. In Ihrem Fall ist eine der Tabellen leer (mit 0 Datensätzen), es werden keine Daten angezeigt. Wenn Sie immer noch Daten anzeigen möchten und Tabellen keine Beziehung haben, müssen Sie überprüfen, ob die Anzahl der Tabellen größer als 0 ist. Andernfalls werden Datensätze nur aus einer Tabelle angezeigt, die nicht leer ist.

>     
jaxb 03.07.2010 11:11
quelle

Tags und Links