创建模拟服务台票务服务。
我有一个ticket
表,其中包含客户创建的所有票证。
我有一张works_on
表,其中包含经理声称并正在处理的所有门票。
在这两个表格中,我都有customerid
来识别故障单的所有者。
在客户菜单中,他们可以在ticket
表格中检查他们创建的所有故障单,无论它们是否已打开,或者在works_on
表中进行处理。
下面我的代码给了我两张桌子的同一张票。我只想看一次票。我怎么能这样做?
SELECT * FROM ticket
INNER JOIN works_on
ON ticket.custid = works_on.customerid
答案 0 :(得分:0)
美好的一天,
尝试使用Group By
SELECT * FROM ticket
INNER JOIN works_on
ON ticket.custid = works_on.customerid
GROUP BY ticket.custid
您也可以尝试使用DISTINCT
SELECT DISTINCT语句用于仅返回distinct (不同的)值
答案 1 :(得分:0)
{
"people":[
{"firstName":"Hasan Sait", "lastName":"Arslan", "email":"hasan.sait.arslan@gmail.com"}]
}
这会将结果分组到客户ID相同的位置。
如果没有,则将select修改为SELECT DISTINCT
答案 2 :(得分:0)
您正在加入错误的列。当您加入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