0

我的搜索选项有这个问题。我的问题是,它给了我重复。不可能,因为如果我按 ID 搜索,它会给我两行,并且 ID 是唯一的。这是我使用的查询:

SELECT forma.*, SMS_MONTIME.IDTICKET, SMS_MONTIME.MBYLLUR,SMS_MONTIME.time_added
FROM forma 
LEFT JOIN SMS_MONTIME ON forma.ID = SMS_MONTIME.IDTICKET where forma.$kategoria LIKE '%$search%' ORDER BY forma.ID 

我可以使用什么来避免重复?也许没有离开加入。

4

3 回答 3

2

当您在SMS_MONTIMEtable 中有多个IDTICKET等于 single 的行时,就会发生这种情况forma.ID。例如,如果forma表中只有一行ID等于,则可能有10两行等于。然后你在结果中得到两行,表中的重复信息和表中的不同信息。SMS_MONTIMEIDTICKET10formaSMS_MONTIME

除非你重新考虑你想要的结果,否则你无法避免这种情况。表的不同信息应该怎么处理SMS_MONTIME?您可能需要使用单独的查询来提取所需的信息,或者您可以处理结果(带有重复项)以提取所需的信息。

于 2013-02-16T15:05:31.877 回答
0

你试过了吗DISTINCT

SELECT DISTINCT column_name(s)
FROM table_name
Where <conidition>

检查这个链接

于 2013-02-16T15:04:18.227 回答
0

正如我在评论中提到的,如果您的 SMS_MONTIME 表中有多条记录,您将收到重复的记录。如果您只想接收一条记录,则可以获取 MAX(time_added) 并仅显示该记录。这是一个例子:

SELECT forma.*, SMS_MONTIME.IDTICKET, SMS_MONTIME.MBYLLUR,SMS_MONTIME.time_added
FROM forma 
    LEFT JOIN (
        SELECT IDTICKET, MAX(time_added) max_time_added
        FROM SMS_MONTIME 
        GROUP BY SMS_MONTIME.IDTICKET
    ) SMS_MONTIME_MAX ON forma.ID = SMS_MONTIME_MAX.IDTICKET 
    LEFT JOIN SMS_MONTIME ON 
        forma.ID = SMS_MONTIME.IDTICKET AND SMS_MONTIME.time_added AND SMS_MONTIME_MAX.max_time_added
WHERE forma.$kategoria LIKE '%$search%' 
ORDER BY forma.ID 

希望这可以帮助。

于 2013-02-16T15:14:32.093 回答