Mysql
 sql >> Base de données >  >> RDS >> Mysql

Joindre uniquement pour des lignes spécifiques où la valeur correspond à une variable

il semble que vous ayez juste besoin d'un LEFT JOIN aux autres tables car il semble que vous souhaitiez voir tous les étudiants du premier groupe, indépendamment de toute offre d'emploi/intérêt.

Si c'est le cas... assurez-vous que les tables "Intérêt" et "Offres" ont un index où l'identifiant de l'étudiant est soit un index à élément unique, soit le premier dans celui d'un index composé.

select STRAIGHT_JOIN
      ORS.Student_ID,
      ORS.First_Name,
      ORS.Last_Name,
      ORS.Class,
      ORS.Rank,
      JI.Employer_Interest,
      JI.Interest,
      OFR.Employer_Offer
   from 
      OriginalResultSet ORS

         LEFT JOIN Interest JI
            ON ORS.Student_ID = JI.Student_ID
           AND JI.Employer_Interest = YourPHPVariable

            LEFT JOIN Offers OFR
               on JI.Student_ID = OFR.Student_ID
              AND JI.Employer_Interest = OFR.Employer_Offer

Pour éviter les résultats "NULL" dans l'intérêt, l'intérêt et l'offre de l'employeur, vous pouvez les envelopper dans un appel Coalesce() tel que (pour les trois colonnes de la jointure gauche)

COALESCE( JI.Employer_Interest, " " ) Employer_Interest