0

我有这个查询返回给我一个用户的所有行

$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并且与vouchers一个 FK 列上的表相关。

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
4

1 回答 1

0

如果客户到账单是一对多,客户到凭证也是一对多,那么您有时会遇到“鸿沟陷阱”,您必须在加入之前汇总账单和凭证中的子值顾客。

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

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

于 2012-12-16T10:34:36.507 回答