从3个具有相同列ID的表中选择记录

时间:2018-09-30 18:03:48

标签: mysql sql

我正在尝试编写一个SQL查询,该查询将在3个具有相同column_Id的表中选择一个学生的记录。

这是我写的,但是所选记录不正确:

select 
   Nov_DEC_billing.*, 
   Nov_DEC_students_portfolio.*, 
   admission_form.academic_year 
from 
   Nov_DEC_billing, 
   Nov_DEC_student_portfolio, 
   admission_form 
where 
     Nov_DEC_billing.ID = Nov_DEC_student_portfolio.ID=admission_form.ID 
   AND 
     admission_form.Program ='Nov/dec'

我选择了一条记录,但记录不正确。请联接包含相同column_id的3个表的正确方法是什么??

4 个答案:

答案 0 :(得分:1)

在查询中使用JOIN

SELECT b.*, p.*, a.academic_year 
FROM Nov_DEC_billing b
JOIN Nov_DEC_student_portfolio p ON p.id = b.id
JOIN admission_form a ON a.id = b.id
WHERE a.Program='Nov/dec'

答案 1 :(得分:0)

您需要像这样连接表:

SELECT Nov_DEC_billing.*,
       Nov_DEC_students_portfolio.*,
       admission_form.academic_year 
FROM Nov_DEC_billing AS ndb,
  LEFT JOIN Nov_DEC_student_portfolio AS ndsp ON ndsp.ID=ndb.ID,
  LEFT JOIN admission_form AS af ON af.ID=ndb.ID
WHERE af.Program='Nov/dec'

答案 2 :(得分:0)

您应该将所有表合并到一个表中。 您要做的就是将所有表合并到一个表中,然后从中选择。 由于您有2个表,因此您应该首先联接2,然后再对结果联接另一个。 有关确切的语法,请参见left join example

答案 3 :(得分:0)

Nov_DEC_billing.ID=Nov_DEC_student_portfolio.ID=admission_form.ID

没有完成您的期望。它采用第一部分Nov_DEC_billing.ID=Nov_DEC_student_portfolio.ID并进行评估。如果值匹配,则该部分变为1,如果它们不匹配,则其变为0。然后将01admission_form.ID进行比较。那很可能会带来奇怪的结果。

所以您必须将其拆分为:

Nov_DEC_billing.ID=Nov_DEC_student_portfolio.ID
AND Nov_DEC_student_portfolio.ID=admission_form.ID

或者按照其他人已经建议的那样使用显式联接语法(我也这样做)。不管怎样,这迫使您将其拆分。