我的搜索选项存在此问题。 我的问题是,它给了我重复。并且它不可能,因为如果我按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
我可以使用什么来避免重复?也许不会离开加入。
答案 0 :(得分:2)
如果SMS_MONTIME
表格中的一行多于IDTICKET
等于单个forma.ID
,则会发生这种情况。例如,如果forma
表中只有一行ID
等于10
,则SMS_MONTIME
中可能有两行IDTICKET
等于{{ 1}}。然后在结果中得到两行,来自10
表的重复信息和来自forma
表的不同信息。
除非您重新考虑所需的结果,否则无法避免这种情况。怎么会破坏SMS_MONTIME
表的信息?您可能需要使用单独的查询提取所需信息,或者您可以处理结果(带有重复项)以提取所需信息。
答案 1 :(得分:0)
答案 2 :(得分: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
希望这有帮助。