内连接SQL语法

时间:2014-06-25 15:54:17

标签: mysql sql join

我之前从未做过内部联接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";

我确定我想要做的语法完全失败。有关修复它的想法吗?

3 个答案:

答案 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)