2012-12-16 93 views
0

我有这样的查询返回我的所有行的一个用户重复记录3个表

$strSQL = "SELECT * FROM customer , bills , vouchers 
WHERE 
bills.bills_CustomerName = customer.customer_Name and 
vouchers.vouchers_CustomerName = customer.customer_Name and 
bills.bills_CustomerName like '%".$_POST["MyName"]."%' 
"; 

我有一排重复2次的问题,customer表有关bills表以及FK列上的vouchers表。

bills表:

bills_ID - bills_CustomerName - bills_Total 

customer表:

customer_ID - customer_Name - customer_Tell 

vouchers表:

vouchers_ID - vouchers_CustomerName - vouchers_Total 

我们得到

Name  Total Tell 

kam johin 100  0444444444 
kam johin 100  0444444444 
mak pop 200  0588888888 
mak pop 200  0588888888 
+0

@marc_s我编辑我的帖子 –

+0

请向我们展示一些示例数据。什么是bills_CustomerName和vouchers_CustomerName包含? –

+0

我们仍然需要查看表中的数据**以及输出的内容(以便我们可以看到重复的数据) –

回答

0

如果客户的账单是一对多的,客户凭证也是一对多的,那么您有时会被称为“鸿沟陷阱”,您将不得不从账单中汇总儿童价值,在加入客户之前的优惠券。

或者您的数据模型应该更像: - Customer-> Bill-> Voucher,在这种情况下,您需要在凭证表中包含与凭证相关的账单的外键。

顺便说一句,您可能可以为客户使用一些代理键 - 当两个不同的客户具有相同的名称时会发生什么?