Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich Outer Full Join in Laravel 5.0?

Ich weiß nicht, was genau Ihre Abfrage zu erreichen versucht und wo Sie einen vollständigen äußeren Join benötigen, aber ich beginne diese Antwort damit, dass MySQL keine integrierte Unterstützung für einen vollständigen äußeren Join bietet. Basierend auf dieser SO-Frage , können wir einen alternativen Weg finden, um die folgende Abfrage zu schreiben:

SELECT * FROM t1
FULL OUTER JOIN t2
    ON t1.id = t2.id

Dies kann als UNION umgeschrieben werden eines Links-Join und eines Rechts-Join:

SELECT * FROM t1
LEFT JOIN t2 ON t1.id = t2.id
UNION ALL
SELECT * FROM t1
RIGHT JOIN t2 ON t1.id = t2.id

In Laravel können wir den folgenden Code schreiben, um den obigen vollständigen äußeren Join darzustellen:

$second = DB::table('t2')
             ->rightJoin('t1', 't1.id', '=', 't2.id')

$first = DB::table('t1')
            ->leftJoin('t2', 't1.id', '=', 't2.id')
            ->unionAll($first)
            ->get();

Auch hier weiß ich nicht, warum Sie denken, dass Sie zwei äußere Verknüpfungen benötigen, aber Sie sollten trotzdem in der Lage sein, den obigen Code und die obige Abfrage anzupassen und für Ihre Situation zu verwenden.

Referenzen: