来自mysql语句的重复结果

时间:2013-08-25 16:02:04

标签: mysql

我有这个选择查询

SELECT * FROM Category cgy, Product pd, Transactions tr 
 WHERE  cgy.cid= 1
   AND tr.payment_status = 'Completed'
   AND pd.pid=cgy.pid`

使用该查询我只想获得1个结果但不幸的是我得到2个相同的结果。我不明白为什么因为我加入了主键和外键。

Transactions没有任何与这些表相关的密钥

更新

产品表

pid  Name  

1    green
2    red
3    blue

类别表

cid    pid
1       1 
2       2
3       3

交易表

tid     payment_statue    address1
1          Completed        1 hello road
2          incomplete       2 inactive road

1 个答案:

答案 0 :(得分:0)

在您更新了问题之后,如果您将一行值payment_status作为“completed”,则此查询将返回单个结果。如果您将多行作为payment_status作为“completed”,则从foreign key表格product添加pid引用。

所以你可以尝试:

alter table transactions add(pid int(10));

ALTER TABLE transactions ADD CONSTRAINT fk_product_id FOREIGN KEY (pid) references product(pid);

并重写查询添加:

select * FROM Category cgy, Product pd, Transactions tr WHERE cgy.cid = 1 and tr.payment_status = 'completed' and pd.pid = cgy.pid and pd.pid = tr.pid

这样可行。