2016-02-12 69 views
0

使用这个SQL:SQL正显示出重复记录

SELECT p.* 
FROM shop_products p, shop_product_attributes c 
WHERE c.type = 'category' AND p.sequence = c.value AND c.value = '1' 

它显示两次相同的记录。

应该显示来自shop_products where shop_products.sequence行是shop_product_attributes.product_seqshop_product_attributes.value'1'

+2

请[编辑]你的问题,并包括来自两个表格的样本数据和你试图获得的输出。另外,请为您正在使用的特定DBMS添加标签,因为它们之间存在语法差异。谢谢。 –

+1

根据您的设计店产品有很多属性。并且它至少在shop_product_Attributes中出现一个类型为c且值为1的产品具有多于一条记录。您可以向选择中添加“区别”以解决问题;但如果重复记录不应存在相同类型和值,则可能需要添加唯一约束。 – xQbert

+0

您的查询与您的最后一个句子不匹配,你谈论'product_seq',但加入'c.value' – dnoeth

回答

1
SELECT s.* 
FROM shop_products s 
where s.sequence 
in(select distinct product_seq from shop_product_attributes where type = 'category' and value=1) 
+0

类别发生了什么? – xQbert

+0

哎呀最初错过了。现在编辑查询 – Chendur

+0

子选择中的'distinct'是无用的 –

1

您的查询不符合您的最后一句话,你说说product_seq,但加入对c.value

SELECT p.* 
FROM shop_products p JOIN shop_product_attributes c 
    ON p.sequence = c.product_seq 
WHERE c.type = 'category' 
    AND c.value = '1'