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

Mysql 从3个具有相同列id的表中选择记录,mysql,sql,Mysql,Sql,我正在尝试编写一个SQL查询,它将在3个表中选择一个学生的记录,这些表具有相同的列 这是我写的,但所选记录不准确: select Nov_DEC_billing.*, Nov_DEC_students_portfolio.*, admission_form.academic_year from Nov_DEC_billing, Nov_DEC_student_portfolio, admission_form where Nov_D

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

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

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'

我选择了一个好的记录,但它不准确。请选择正确的方法来联接共享同一列id的3个表。??

您需要联接如下表:

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'

在查询中使用
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'

您应该将所有表合并到一个表中。 您要做的是将所有表连接到一个表中,然后从中进行选择。 因为您有两个表,所以应该首先连接2个表,然后在结果上连接另一个表。 请参见此处了解确切的语法

Nov_DEC_billing.ID=Nov_DEC_student_portfolio.ID=admission_form.ID
没有达到你的期望。它接受第一部分,
Nov\u DEC\u billing.ID=Nov\u DEC\u student\u portfolio.ID
并对其进行评估。如果值匹配,则该部分变为
1
,如果不匹配,则变为
0
。然后将
0
1
入学表格ID
进行比较。这很可能会产生奇怪的结果

因此,您必须将其分为:

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

或者只使用显式连接语法,其他人已经建议过了(我也这么做)。这迫使您无论如何都要拆分此文件。

请发布一些示例数据和所需结果。你的“不准确”完全不是描述性的。我还建议使用显式的
JOIN
语法。您将能够更容易地看到任何缺失的条件。