1

私は比較的新しい SQL クエリであり、適切なデータ セットを取得するために 2 つのテーブルを結合しようとしていますが、いくつかの問題が発生しています。私は2つ試しました:

SELECT wp_rg_lead.id, wp_rg_lead.created_by, wp_rg_lead_detail.field_number, wp_rg_lead_detail.value
FROM wp_rg_lead, wp_rg_lead_detail
WHERE wp_rg_lead.id = wp_rg_lead_detail.lead_id AND wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'

SELECT wp_rg_lead.id, wp_rg_lead.created_by, wp_rg_lead_detail.field_number, wp_rg_lead_detail.value
FROM wp_rg_lead
INNER JOIN wp_rg_lead_detail
ON wp_rg_lead.id = wp_rg_lead_detail.lead_id
WHERE wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'

どちらも機能せず、どちらも私の相対的な SQL ステートメントの作成能力の欠如を示しています :)

基本的に、テーブルの 1 つには、を介して 2 番目のテーブルに関連するwp_rg_leadフォーム ID が含まれています。wp_rg_lead.idwp_rg_lead_detailwp_rg_lead_detail.lead_id

私は基本的に、それを取得して、多くの関連wp_rg_lead.created_byする と関連付けたいと考えています。これはANDに基づいている必要がありますwp_rg_lead_detail.field_numberwp_rg_lead_detail.valuewp_rg_lead.form_id = '9'wp_rg_lead.payment_status = 'Approved'

基本的に、次のような素敵な配列になりたいと思います。

Array
(
    [0] => stdClass Object
        (
            [id] => 301
            [created_by] => 213
            [field_number(1)] => [value(1)]
            [field_number(2)] => [value(2)]
            [field_number(3)] => [value(3)]
            ...
        )
     ...
)

field_numberしかし、とを関連付けるために SQL ステートメントを作成する方法がわかりませんvalue。2 つの異なるステートメントを作成して UNITE する必要がありますか?

最後に、配列に対して count() を実行し、「承認済み」ステータスに基づいてエントリ数のみを返すようにしたいと考えています。2 番目のクエリの結果は 208 か何かになります。

このクエリを機能させるための助けをいただければ幸いです。これは私が今理解していることを超えています。

ありがとうございます!

トレ

4

1 に答える 1

0

あなたの言っていることが理解できれば、クロス集計クエリの結果を求めています。ここには、動的なクロス集計クエリに関するいくつかの良い指針があります

「フィールド番号」列をセットグループに制限できる場合は、次のようなクエリが機能する可能性があります。

SELECT
  [ID],
  [CREATED_BY],
  [FIELD_NUMBER1] = SUM(CASE WHEN [FIELD_NUMBER] = 'FIELD_NUMBER1' THEN [FIELD_VALUE] ELSE 0 END),
  [FIELD_NUMBER2] = SUM(CASE WHEN [FIELD_NUMBER] = 'FIELD_NUMBER2' THEN [FIELD_VALUE] ELSE 0 END)
....
FROM wp_rg_lead
INNER JOIN wp_rg_lead_detail
ON wp_rg_lead.id = wp_rg_lead_detail.lead_id
WHERE wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'

(あなたの例から最後のビットを取得し、必要に応じて変更してください)

于 2012-04-04T22:13:56.490 に答える