2016-09-22 103 views
0

我有一个mysql查询需要通过搜索供应商名称来返回供应商表中的供应商ID,但它一直返回多个值。mysql返回多个行

CREATE DEFINER=`root`@`%` PROCEDURE `sp_insert_sup_order`(
supname varchar(50), 
dat date, 
total decimal(10,2) 
) 
BEGIN 
insert into Supplier_Order 
(
Supplier_ID, 
SupDate, 
Total, 
Sup_Name 
) 
values 
(
(select Supplier_ID from Supplier Where Supplier_ID.SupName = supname), 
dat, 
total, 
supname 
); 

那就是查询。任何帮助,这将不胜感激谢谢

+0

更改此行:'(从供应商中选择Supplier_ID,其中Supplier_ID.SupName = supname)':(从供应商中选择供应商名称Supplier.SupName = supname)' –

回答

0
(select Supplier_ID from Supplier Where Supplier_ID.SupName = supname) 

这应该是这样的:

(select Supplier_ID from Supplier Where Supplier.SupName = supname), 

你们为什么存储供应商名称和顺序编号?不应该这样做,您必须更改供应商的名称,您将不得不更新所有订单。只有供应商ID应该存储在订单表中!

+0

该名称存储在那里,因为我们可以删除供应商如果我们在哪里删除一个供应商,那么我们将无法再次找到订单 –

+0

非常感谢你的工作:)我整天坐在那个问题 –

+0

@prahielbicyram解决这个问题的一种方法就是将供应商标记为删除。所以你不必展示他们,仍然可以得到名字...... –