Mysql 从3个具有相同列id的表中选择记录
我正在尝试编写一个SQL查询,它将在3个表中选择一个学生的记录,这些表具有相同的列 这是我写的,但所选记录不准确: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
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
语法。您将能够更容易地看到任何缺失的条件。