4

誰かが正確なクエリを書くのを手伝ってくれませんか。これにより、次の結果が得られます。

私が書いた、

   SELECT tbl_order_detail.order_id, 
          tbl_order_detail.order_title, 
          tbl_order_detail.dealer_id
     FROM tbl_order_detail
LEFT JOIN tbl_order_lead_send_detail ON tbl_order_detail.order_id=tbl_order_lead_send_detail.order_id
    WHERE tbl_order_detail.order_status = 'Active'

そして、dealer_idを取り、dealer_nameを返す1つのphp関数からディーラー名を見つけ(別のmysqlクエリを使用)、別のmysqlクエリから数えます

しかし、それは私の望む出力を与えていません。次のように出力しています

しかし、上記の丸で囲まれたものはすべて同じであるため、1行にのみ表示したいのですが、出力に何度も表示されます(なぜ1つではないのですか)。

誰かがこれで私を助けることができますか?

4

3 に答える 3

3

order_id でGROUPする場合は、準備完了です。

編集:

ディーラー名を取得するには、ディーラー テーブルに参加し、ディーラー名の列を選択します。

未テスト、エラーが含まれている可能性があります

SELECT
    tbl_order_detail.order_id, 
    tbl_order_detail.order_title, 
    dealer.dealer_name,
    COUNT(tbl_order_lead_send_detail.order_id) AS total_customers_count
FROM tbl_order_detail
JOIN dealers ON (tbl_order_detail.dealer_id = dealers.dealer_id)
LEFT JOIN tbl_order_lead_send_detail ON (tbl_order_detail.order_id = tbl_order_lead_send_detail.order_id)
WHERE tbl_order_detail.order_status = 'Active'
GROUP BY tbl_order_detail.order_id, tbl_order_detail.order_title, dealer.dealer_name;
于 2012-05-12T14:51:55.297 に答える
1

カウントを取得するには、 を使用しますCOUNT()。オーダー ID で結果をグループ化するGROUP BY tbl_order_detail.order_idには、MySQL (または一般的には SQL) の利点の 1 つは、平易な英語にかなり近いことです。

于 2012-05-12T14:52:35.243 に答える
0

これを試して:

SELECT OD.order_id,        
       OD.order_title, 
       OD.dealer_id,
       SD.customer_id, 
       COUNT(SD.id) AS NumCustomers
FROM      tbl_order_detail OD
LEFT JOIN tbl_order_lead_send_detail SD
      ON OD.order_id=SD.order_id
WHERE OD.order_status='Active'
GROUP BY OD.order_id,        
         OD.order_title, 
         OD.dealer_id,
         SD.customer_id
于 2012-05-12T14:56:07.827 に答える