繁体   English   中英

内部联接SQL语法

[英]Inner Join SQL Syntax

我以前从未做过内部连接SQL语句,所以我什至不知道这是否适合使用,但这是我的情况。

表1列:id,course_id,单元,课程表2列:id,course_id

最后,我要算的数id's各单位在表1 中也列于表2。

因此,即使它不起作用,也可能类似...。

$sql = "SELECT table1.unit, COUNT( id ) as count, table2.id, FROM table1, table2, WHERE course_id=$im_course_id GROUP BY unit";

我确定我要执行的语法完全失败。 有修复的想法吗?

SELECT unit, COUNT( t1.id ) as count
FROM table1 as t1 inner JOIN table2 as t2 
  ON t1.id = t2.id
GROUP BY unit

希望这可以帮助。

如果我了解您想要什么(也许可以发布示例输入和输出?):

SELECT unit, COUNT( id ) as count
FROM table1 as t1 JOIN table2 as t2 
  ON t1.id = t2.id
GROUP BY unit

好的,这里发生了一些事情。 首先,不赞成使用逗号作为联接,因此甚至可能不支持它们(取决于您使用的是什么)。 您可能应该切换到显式编写inner join

现在,只要你有任何形式的参与,还需要on 您需要告诉sql如何将这两个表匹配起来。 on应该在加入后立即出现,如下所示:

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 ) sql不知道要计数哪个id,因为table1和table2都有ID。 因此,您应该使用count(table1.id)count(table2.id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM