0

特定の期間 (つまり、1 か月) のレポートを出力するクエリを実行し、顧客に請求されるすべての料金と支払額 (ある場合) を表示する必要があります。私の問題は、その顧客のすべての行に支払われた金額を表示していることです。すべての請求額と 1 つの支払い額を表示したい (最後の行にあるとしましょう)。顧客の重複支払額を表示しない

姓名MIサービス提供日料金支払い
 BarrazaReyD5/1/2013$160.00 $0.00
 BarrazaReyD5/1/2013$12.10 $0.00
 OteroAliciaM5/3/2013$84.68 $329.20
 OteroAliciaM5/3/2013$99.46 $329.20
 OteroAliciaM5/3/2013$46.59 $329.20
 OteroAliciaM5/3/2013$48.98 $329.20
 OteroAliciaM5/3/2013$26.35 $329.20
 OteroAliciaM5/3/2013$23.14 $329.20
 メイウェザー ベシー 2013 年 5 月 5 日$99.46 $249.70
 メイウェザー ベシー 2013 年 5 月 5 日$97.96 $249.70
 メイウェザー ベシー 2013 年 5 月 6 日$34.73 $249.70
 メイウェザー ベシー 2013 年 5 月 6 日$17.55 $249.70
 GarciaMichael 2013 年 5 月 11 日$198.92 $0.00
 GarciaMichael 2013 年 5 月 11 日$29.95 $0.00
 GarciaMichael 2013 年 5 月 11 日$17.30 $0.00
 SmithRichard 2013 年 5 月 15 日$35.00 $0.00
 SmithRichard 2013 年 5 月 15 日$2.64 $0.00
 BoothKeithR5/23/2013$14.64 $0.00
 BoothKeithR5/23/2013$255.30 $0.00
 BoothKeithR5/23/2013$66.99 $0.00
 スミスヴァネッサ 2013 年 5 月 23 日$18.00 $0.00
 SmithVanessa 2013 年 5 月 23 日$1.36 $0.00
 HERNANDEZLAURA 2013 年 5 月 25 日$34.47 $0.00
 MyersJonathan 5/30/2013$35.00 $37.65
 マイヤーズジョナサン 2013 年 5 月 30 日$2.65 $37.65


顧客に請求されるすべての料金に対して支払われた合計金額を表示しています。私のクエリはこれです

$query = "SELECT
 c.lname as lname,
 c.fname as fname,
 c.mname as mname,
 s.date as date,
 b.fee as fee,
 p.amount as payment,
 FROM sell as s,
 customer as c,
 billing b
 LEFT JOIN payments p on p.completion = b.completion AND p.cid=b.cid
 WHERE      
 s.completion = b.completion
 AND b.cid = s.cid
 AND c.pid = s.cid
 AND s.date BETWEEN ? and ?
 ORDER BY s.date";

試してみGROUP BY p.amountましたが、その顧客には 1 行だけ残して、他のすべての料金を削減しました。顧客に請求されるすべての料金を表示する必要がありますが、支払いとして1 つの金額のみを表示する必要があります。助けてください

4

2 に答える 2

0

クエリで結合スタイル (ANSI 結合とコンマ結合) を混在させています。そうしないでください。常に ANSI JOIN 表記を使用してみてください。より説明的です。

そうは言っても、クエリは次のようになるはずです

SELECT c.lname,
       c.fname,
       c.mname,
       s.date,
       b.fee,
       p.amount payment
  FROM sell s JOIN customer c
    ON s.cid = c.pid JOIN billing b
    ON s.cid = b.cid 
   AND s.completion = b.completion LEFT JOIN payments p 
    ON b.completion = p.completion 
   AND b.cid = p.cid
 WHERE s.date BETWEEN ? AND ?
 ORDER BY s.date

クエリは明らかにテストされていません

それでも問題が解決しない場合は、質問を編集し、関連するすべてのテーブル (数行) に関連するサンプル データを投稿して、同じ表形式で目的の出力 (既に投稿したもの) を生成する必要があります。

于 2013-07-02T03:56:29.590 に答える