我在查询中使用左连接,由于某种原因,它多次显示记录。问题似乎是存储帐户的LEFT加入,
因为有4个记录在同一仓库,它显示记录4次。
我的查询是
SELECT portfolioid, cases, bottles, size, trading, Wine_Name, Wine_Vintage, storageid,dutystatus,packagingtype,rotation,storageid,color, warehouseid,name,
wines.*,
wineinfo.*,
storageaccounts.*
FROM (`portfolio`)
LEFT JOIN wines ON wines.wine_id = portfolio.wine_id
LEFT JOIN storage ON storage.warehouseid = portfolio.storageid
LEFT JOIN storageaccounts ON storageaccounts.warehouse = portfolio.storageid
LEFT JOIN wineinfo ON wineinfo.wine_id = portfolio.wine_id AND wineinfo.Vintage = portfolio.Wine_Vintage
WHERE portfolio.userID = '$userID'
用户将他们的仓库设置在storageaccounts表中,因此这里将具有相同的仓库,但是具有唯一的userID。但是列仓库的某些行将是相同的,
由于这个原因,阻止它显示主记录4次的最佳方法是什么?
答案 0 :(得分:1)
以下是一个可能有用的常规SQL疑难解答过程:
最终结果是这样的:
SELECT 1 AS dummy_start, table1.id1 table1.column11, table1.column12, table1.column13, table2.id2 table2.column21, table2.column22, table3.id3 table3.column31, 1 AS dummy_end FROM table1 INNER JOIN table2 ON table1.id2 = table2.id2 INNER JOIN table3 ON table1.id3 = table3.id3 ORDER BY table1.id1
由于某种原因,您获得了具有相同id1的意外重复行。注释掉对table2和/或table3的所有引用都很简单。我倾向于启动,将所有已连接的表注释掉,然后一次添加一个(即取消注释相关行)。当您看到第一组重复项时,您将知道您刚添加的表是可能的罪魁祸首。