繁体   English   中英

sql-内部联接没有重复的返回集?

[英]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

您也可以尝试使用DISTINCT

SELECT DISTINCT语句仅用于返回不同的(不同的)值

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.

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