sql >> Database teknologi >  >> RDS >> Mysql

Dobbelt JOIN med det samme bord to gange

Where-klausulens grænser på de venstre join-tabeller eliminerer de ønskede resultater på grund af nul-poster... Så flyt grænserne til selve join-forbindelsen, så grænsen anvendes FØR join-forbindelsen, og beholder således null-værdi-posterne.

SELECT i.*,r.*,r2.*, r.points+r2.points AS sum_points
FROM list_couples AS l
LEFT JOIN rank AS r ON l.p_1=r.player
  and r.week='$week' AND r.anno='$anno' 
LEFT JOIN rank AS r2 ON l.p_2=r2.player
  and  r2.week='$week' AND r2.anno='$year'
ORDER BY sum_points DESC

Fordi pluto ikke har nogen uge/år (anno), så eliminerer where-klausulen denne post. ved at flytte grænserne til sammenføjningen, påføres filteret før sammenføjningen opstår, og dermed beholdes den VENstre ydre sammenføjning.

Sagt på en anden måde, WHERE-klausulen får venstre til at slutte sig til en indre!




  1. ORA-01111 i MRP i fysisk standby-database

  2. SQL Server JSON_Modify, hvordan opdateres alle?

  3. Brug af tidligere MySQL-datamappe på ny MySQL-installation

  4. logge ind som bruger eller admin fra 2 forskellige borde