0

1人のユーザーのすべての行を返すこのクエリがあります

$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"]."%'
";

1 つの行が 2 回繰り返され、テーブルがテーブルと1 つの FK 列のテーブルにcustomer関連しているという問題があります。billsvouchers

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

顧客から請求までが 1 対多で、顧客からバウチャーまでも 1 対多の場合、「キャズム トラップ」と呼ばれることがあり、参加する前に請求とバウチャーから子の値を集計する必要があります。お客様。

あるいは、データ モデルは次のようにする必要があります:- Customer->Bill->Voucher の場合、バウチャー テーブルに、バウチャーが関連する Bill への外部キーを含める必要があります。

ところで、おそらく顧客に代理キーを使用できます.2人の異なる顧客が同じ名前を持っているとどうなりますか?

于 2012-12-16T10:34:36.507 に答える