2015-11-04 178 views
0

我有兩個表產品和類似的產品。產品表包含與可用產品相關的數據,但是這些表具有相同但具有不同產品ID的產品負載。這就是爲什麼我有另一張表來存放所有類似產品的數據。我需要運行一個查詢來從產品表中選擇產品,但同時也會檢查similar_products表以不選擇任何重複的產品。MySQL選擇產品相似產​​品

因此,例如:

產品表:

ProductID | Manufacturer | Part No  | Name 
----------------------------------------------------------------- 
8202  | Hp   | 402146-B21 | HP Auto Synch Cable 
8210  | Hp   | 113894-B21 | HP Stylus 3 Pack 
8211  | Hp   | 113894-B21 | HP Stylus 3 Pack 
8212  | Hp   | 113894-B21 | HP Stylus 3 Pack 

Similar_products表

ProductID | Similar_ProductID 
----------|------------------- 
8210  | 8211 
8210  | 8212 
8211  | 8210 
8211  | 8212 
8212  | 8210 
8212  | 8211 

如何運行一個查詢,將只選擇產品ID 8202和8210,而不是選擇重複產品。

+0

變化。如果產品X相似產品y,是否遵循(看起來應該)產品y與產品x相似?換句話說,會不會有重複? – Strawberry

+0

如果產品x與產品y相似,而產品y與產品z相似,是否意味着產品x也與產品z相似,通過傳遞性?另外,在你的例子中,當與8210不相似時,如何選擇8202? –

+0

@Strawberry不是所有的產品都會有重複,但有些產品是相似的,但有不同的產品,但是當爲magento商店創建出口時,我無法導出重複的產品,這就是爲什麼我需要從給定產品的所有重複產品中只選擇一種產品的原因。 – user4676307

回答

1

如果你總是有關係X〜Y作爲兩條記錄[X,Y]和[Y,X]在Similar_products你的問題是The Rows Holding the Group-wise Maximum of a Certain Column

SELECT 
    p.ProductID, p.Name 
FROM 
    Products as p 
WHERE 
    NOT EXISTS(
     SELECT 
      1 
     FROM 
      Similar_products s 
     WHERE 
      p.ProductID=s.ProductID 
      AND p.ProductID>s.Similar_ProductID 
    )