0

請求書と請求書_製品という名前の2つのテーブルがあります。視覚化するには:

請求表

Invoice_Number  Invoice_Date  Customer_Name  Total_Amount 

     1           2013-08-01        XYZ        10000
     2           2013-08-02        ABC         7000
     3           2013-08-03        DEF         4000

請求書_商品テーブル

Invoice_Number    Product_names     Price

       1              prd1          5000
       1              prd2          3000
       1              prd3          2000
       2              prd22         3000
       2              prd25         4000
       3              prd13         2500
       3              prd16         1500

両方のテーブルを組み合わせて、次の出力を取得したいと考えています。

Invoice_Number  Invoice_Date  Product_names Customer_Name  Total_Amount 

     1           2013-08-01        prd1          XYZ         10000
                                   prd2
                                   prd3

     2           2013-08-02        prd22         ABC         7000
                                   prd25

     3           2013-08-03        prd13         DEF         4000
                                   prd16

次のクエリを試しました。

select Invoice_Number,Invoice_Date,Product,Customer_Name,Total_Amount from invoice,invoice_product where invoice.Invoice_Number=invoice_product.invoice_Number;

次の出力が得られます。

Invoice_Number  Invoice_Date  Product_names Customer_Name  Total_Amount 

     1           2013-08-01        prd1          XYZ         10000
     1           2013-08-01        prd2          XYZ         10000
     1           2013-08-01        prd3          XYZ         10000

     2           2013-08-02        prd22         ABC         7000
     2           2013-08-02        prd25         ABC         7000

     3           2013-08-03        prd13         DEF         4000
     3           2013-08-03        prd16         DEF         4000

Having,Distinct,Group By目的の出力を得るには、クエリのようなものを使用する必要がありますか? 私はmysqlの初心者です。どんな助けでも大歓迎です。

4

1 に答える 1

1

請求書ごとに 1 行のみが本当に必要であるが、各製品をリストしたい場合は、次GROUP_CONCAT()のような関数を使用することをお勧めします。

SELECT
  i.Invoice_Number AS Invoice_Number,
  i.Invoice_Date AS Invoice_Date,
  GROUP_CONCAT(ip.Product) AS products,
  i.Customer_Name AS Customer_Name,
  i.Total_Amount AS Total_Amount
FROM invoice AS i
INNER JOIN invoice_product AS ip
  ON i.Invoice_Number=ip.invoice_Number
GROUP BY i.Invoice_Number

デフォルトでGROUP_CONCAT()は、値の間のセパレータとしてコンマを使用するため、products列の場合は のような値が得られますprd1,prd2,prd3。必要に応じて別のセパレータを指定できます。

于 2013-08-06T15:17:57.797 に答える