我有这个选择查询
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
答案 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
这样可行。