[英]sql - Return set with no duplicates from inner join?
创建模拟服务台售票服务。
我有一个ticket
表,其中包含客户创建的所有票证。 我有一个works_on
表,其中包含经理要求并正在使用的所有票证。
在两个表中,我都有一个customerid
来标识票证的所有者。
在客户菜单中,他们可以检查自己创建的所有票证,无论ticket
表中的ticket
是否已打开,是否在works_on
表中正在使用。
我下面的代码给了我两个表相同的凭单。 我只想看一次票。 我怎样才能做到这一点?
SELECT * FROM ticket
INNER JOIN works_on
ON ticket.custid = works_on.customerid
SELECT * FROM ticket
INNER JOIN works_on
ON ticket.custid = works_on.customerid
GROUP BY ticket.custid
这将在客户ID相同的情况下对结果进行分组。
如果不是,则将选择修改为SELECT DISTINCT
您加入了错误的专栏。 当您加入customerid
,它将找到该customerid
所有票证以及该客户的所有works_on
行,并在它们之间创建叉积。 您应该加入票证ID,以便获得每张票证及其对应的works_on
行。
SELECT *
FROM ticket AS t
INNER JOIN works_on AS w ON t.ticket_id = w.ticket_id
WHERE t.custid = :customer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.