Ich möchte so etwas, nicht sicher, ob meine Syntax korrekt ist. Ich werde dies mit PHP ausführen.
%Vor%Also wird die Ausgabe in etwa so aussehen:
Es wäre in Ordnung, wenn es mehrere Zeilen mit denselben Daten in den ersten paar Spalten hätte. Etwas wie das:
grauer Bereich stammt von äußerer SELECT und weißer Bereich von innerer SELECT
Beachten Sie, dass sowohl die äußere als auch die innere SELECT-Anweisung table_c hat. Kann ich dies ohne die IF-Anweisung tun?
%Vor% Es fühlt sich irgendwie falsch an.
Was ist, wenn ich fetch_assoc
verwende?
Ist es sogar möglich, dies in einer Abfrage zu tun?
Um fetch_assoc zu verwenden, müssten Sie Aliase verwenden, sonst könnten Sie sie nur nach Index abrufen. Ansonsten sollte es funktionieren.
WENN a.column3 NICHT NULL DANN
Dies ist, was "innerer Join" ist. Per Definition bedeutet das Innere wirklich "nur wenn es ein Spiel gibt". Alternativ können Sie den linken äußeren Join verwenden und dann ein "where" verwenden, um sicherzustellen, dass keine Datensätze mit NULL an dieser Position enthalten sind. Innerer Join filtert alle Datensätze heraus, die im Feld "Match" den Wert Null aufweisen (dh: NO Match = Diesen Datensatz ausschließen).
Wenn Sie alle Datensätze, aber Sie wollen Leerzeichen in diesen Feldern, wenn die verknüpfte Tabelle keinen Datensatz hat ... das ist, was links Outer Join ist. Noch einmal, das ist eigentlich die Definition. 8 -)
Wenn Sie mit fetch_assoc auf eine PHP-Funktion verweisen, sollten Sie in Erwägung ziehen, zu mysqli anstatt zu mysql zu wechseln, was eine leichter zugängliche Feldzuordnung "index or name" ermöglicht. Aber auf jeden Fall könnte der innere Join die Notwendigkeit der Verwendung des Feldnamen-Aliasing "as XXXX" beseitigen.