我之前从未做过内部联接SQL语句,因此我甚至不知道这是否正确使用,但这是我的情况。
表1列:id,course_id,单位,课程 表2列:id,course_id
最后,我想计算表1 中每个单位id's
的数量,表2中。
所以,即使它不起作用,也许就像....
$sql = "SELECT table1.unit, COUNT( id ) as count, table2.id, FROM table1, table2, WHERE course_id=$im_course_id GROUP BY unit";
我确定我想要做的语法完全失败。有关修复它的想法吗?
答案 0 :(得分:1)
SELECT unit, COUNT( t1.id ) as count
FROM table1 as t1 inner JOIN table2 as t2
ON t1.id = t2.id
GROUP BY unit
希望这会有所帮助。
答案 1 :(得分:0)
如果我理解你想要的东西(也许你可以发布一个示例输入和输出?):
SELECT unit, COUNT( id ) as count
FROM table1 as t1 JOIN table2 as t2
ON t1.id = t2.id
GROUP BY unit
答案 2 :(得分:0)
好的,所以这里有一些事情发生了。首先,作为连接的逗号已被弃用,因此甚至可能不支持它们(取决于您使用的是什么)。你应该切换到明确写inner join
现在,只要您有任何类型的加入,您还需要on
。你需要告诉sql它应该如何匹配这两个表。应该在加入之后立即进行,如下所示:
Select *
From table1 inner join table2
on table1.id = table2.id
and table1.name = table2.name
您可以使用and
加入任意数量的内容。这意味着如果一个表的主键是多个列,您可以轻松地在表之间创建一对一匹配。
最后,由于查询中存在其他常规语法错误,您可能会遇到问题。逗号用于分隔不同的信息。所以在你的查询中,
SELECT table1.unit, COUNT( id ) as count, table2.id, FROM ...
选择结尾处的逗号不应该在那里。相反,这应该是
SELECT table1.unit, COUNT( id ) as count, table2.id FROM ...
这很微妙,但是sql查询无法使用额外的逗号运行。
另一个问题是您拥有的COUNT( id )
。由于table1和table2都有id,因此Sql不知道要计算哪个id。因此,您应该使用count(table1.id)
或count(table2.id)