2013-08-07 32 views
0

我有这样一个表:如何从非唯一键中检索不匹配的记录?

Physician_key Product Month Score 
    1 a  8  1 
    1 a  8  2 
    1 a  8  3 
    2 b  8  2 
    2 b  8  1 

我试图检索具有得分< = 2键只能算我不想计算的关键,即使它发生于有一个单一的时间评分> 2 。所以在输出我想这样的事情: 计数= 2,产品b在第8个月。

我想做一个自我加入与空约束记录密钥< = 2和> 2。但它仍然返回我前两排,我不想要。

+0

表格除非具有PK,否则不是真正的RDBMS表格。 'score' *似乎是一个不适合的化合物成分PK – Strawberry

+0

它的主键是一些sales_id,一个sales_id可以有多个physician_keys –

+0

当前SQL的一个例子会有帮助。 – Jim

回答

0

一个NOT EXISTS条款可能会有帮助:

SELECT * FROM table t 
WHERE NOT EXISTS (
       SELECT 1 
       FROM table tx 
       WHERE tx.Physician_key = t.Physician_key 
         AND tx.Product = t.Product 
         AND Score > 2 
       ); 

这基本上说“给我表中的所有行,但排除其中存在一排这位医生和产品的得分> 2的任何行”

+0

这是表tx?为什么我们只选择1个?医生的密钥可以有n个值 –

+0

他们都是你问题中的表格。因此,我们抓取该表的所有记录,其中Score> 2的同一表中没有条目。 – Jim

+0

我试着用NOT EXISTS(从表中选择physician_key得分> 2)它返回零行 –

相关问题