Mysql
 sql >> база данни >  >> RDS >> Mysql

Обединяване само за конкретни редове, където стойността съвпада с променлива

звучи така, сякаш просто се нуждаете от LEFT JOIN към другите таблици, тъй като изглежда, че искате да видите всички студенти от първия набор, независимо от каквото и да е предложение за работа/интерес.

Ако е така... уверете се, че таблиците „Интереси“ и „Оферти“ имат индекс, при който идентификационният номер на студента е или индекс с единичен елемент, или първи в този на съставен индекс.

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

За да предотвратите резултатите от „NULL“ в интереса, интереса и офертата на работодателя, можете да ги обвиете в извикване Coalesce(), като например (за всичките три колони в лявото съединение)

COALESCE( JI.Employer_Interest, " " ) Employer_Interest


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Динамично MySQL разделяне на базата на UnixTime

  2. Схема на база данни за ACL

  3. Актуализирайте множество редове с известни ключове, без да вмъквате нови редове, ако бъдат открити несъществуващи ключове

  4. Изберете най-голямата стойност за всеки последни 7 дни

  5. php password_verify() хешът и пасът няма да съвпадат