Left outer join - Wie gibt man einen booleschen Wert für die Existenz in der zweiten Tabelle zurück?

8

In PostgreSQL 9 auf CentOS 6 gibt es 60000 Datensätze in pref_users table:

%Vor%

Und eine andere Tabelle enthält ungefähr 500 IDs von Benutzern, die nicht mehr spielen dürfen:

%Vor%

In einem PHP-Skript versuche ich alle 60000 Benutzer von pref_users in einer jQuery-dataTable anzuzeigen. Und ich möchte die gesperrten Benutzer (die Benutzer in pref_ban2 ) markieren.

Was bedeutet, dass ich für jeden Datensatz in meiner Abfrage, der ban oder true enthält, eine Spalte namens false benötigt.

Ich versuche also eine Abfrage linker äußerer Join :

%Vor%

Wie Sie sehen können, ist die Spalte b.id oben leer - weil diese 10 Benutzer nicht gesperrt sind.

Wie bekomme ich einen false -Wert in dieser Spalte statt einer Zeichenfolge?

Und ich bin nicht nach einigen coalesce oder case -Ausdruck, aber ich suche nach dem "richtigen" Weg, um eine solche Abfrage durchzuführen.

    
Alexander Farber 21.11.2014, 17:13
quelle

2 Antworten

8

Eine CASE- oder COALESCE-Anweisung mit einem Outer-Join ist der richtige Weg, dies zu tun.

%Vor%     
Jordan Parmer 21.11.2014, 17:17
quelle
3

"IS NULL" und "IS NOT NULL" geben einen booleschen Wert zurück, daher sollte dies einfach sein.

Ich denke, das ist alles was Sie brauchen?

%Vor%

Nicht sicher, ob Sie das "NOT" brauchen oder nicht, aber Sie werden auf jeden Fall einen bool bekommen.

    
YeB 12.01.2017 14:05
quelle