I'm relatively new SQL queries, and I'm trying to join two tables in order to get a nice data set, but have been having some issues. I've tried two:
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'
and
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'
Neither of which work and both of which illustrate my relative inability to make a nice SQL statement :)
Basically, one of the tables wp_rg_lead
contains a form id wp_rg_lead.id
which relates to the second table wp_rg_lead_detail
via wp_rg_lead_detail.lead_id
.
I basically want to get wp_rg_lead.created_by
and associate that with the many wp_rg_lead_detail.field_number
and their associated wp_rg_lead_detail.value
. This has to be based on wp_rg_lead.form_id = '9'
AND wp_rg_lead.payment_status = 'Approved'
Basically I'd like to end up with a nice array that would end up looking something like:
Array
(
[0] => stdClass Object
(
[id] => 301
[created_by] => 213
[field_number(1)] => [value(1)]
[field_number(2)] => [value(2)]
[field_number(3)] => [value(3)]
...
)
...
)
But I have no idea how to construct a SQL statement in order to associate the field_number
and value
. Do I need to construct two different statements and UNITE them?
In the end, I would love to be able to do a count() on the array and have it only return the number of entries based on the 'Approved' status. My second query results in 208 or something.
I'd appreciate any help trying to get this query working. This is beyond what I understand right now.
Thanks a ton!
Tre
If I understand what you are saying, you are after a cross-tab query result. There are a few good pointers on dynamic cross tab queries here
If you can handle limiting your "field number" columns to a set group then a query like this may work:
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'
(got the last bit from your example, modify as necessary)
field = 1, 2, 3, 4, 5, ...
and their associated value
tr3online 2012-04-05 01:27