sql >> Database >  >> RDS >> Mysql

Hoe gebruik ik outer full join in laravel 5.0?

Ik weet niet wat je vraag precies probeert te bereiken, en waar je een volledige outer join nodig hebt, maar ik zal dit antwoord beginnen door te zeggen dat MySQL geen ingebouwde ondersteuning heeft voor volledige outer join. Gebaseerd op deze SO-vraag , kunnen we een alternatieve manier vinden om de volgende vraag te schrijven:

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

Dit kan worden herschreven als een UNION van een left join en een right 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 kunnen we de volgende code schrijven om de bovenstaande volledige outer join weer te geven:

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

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

Nogmaals, ik weet niet waarom je denkt dat je twee outer joins nodig hebt, maar hoe dan ook, je zou de bovenstaande code en query moeten kunnen aanpassen en gebruiken voor jouw situatie.

Referenties:




  1. MySQL - mysqldump --routines om slechts 1 opgeslagen procedure (op naam) te exporteren en niet elke routine

  2. MySQL, update meerdere tabellen met één query

  3. Oracle-uitvoeringsplannen bij gebruik van de LIKE-operator met een DETERMINISTIC-functie

  4. 404 omleiden naar vergelijkbare URL's