Select on Group
Karl DeSaulniers <[email protected]> Mon, 16 Nov 2015 18:02:26 -0600
| Newsgroups | gmane.comp.php.database |
|---|---|
| Message-ID | <[email protected]> |
Hello All,
Hoping someone can help me with this query.
I want to select some custom fields from my database that are part of a group of custom fields.
There are several of these groups. I want to (in one sql statement) grab these fields, all of them
and have them grouped in the results like so.
$custom_fields = array(
'Group1' => array(
'field_ID' => '1',
'field_name' => 'myAddressField',
'filed_slug' => 'my-address-field'
),
'Group2' => array(
'field_ID' => '2',
'field_name' => 'myCityField',
'filed_slug' => 'my-city-field'
),
'Group3' => array(
'field_ID' => '3',
'field_name' => 'myStateField',
'filed_slug' => 'my-state-field'
)
)
Here is the clincher... not all the info is in the same table.
This is what I am doing currently and it works, however I would like to eliminate calling the database in a foreach loop as well as multiple times to get my results.
[code]
$FieldGroups = $wpdb->get_results("SELECT DISTINCT Field_Group FROM ".table_name1."");
foreach($FieldGroups as $i=>$FieldGroup) {
$field_group = stripslashes_deep($FieldGroup->Field_Group);
$SQL = "SELECT ft.*, mt.*
FROM ". table_name1." ft
LEFT JOIN ". table_name2." mt
ON mt.Field_ID = ft.Field_ID
WHERE ft.Field_Group='%s' AND mt.Page_ID=%d AND ft.Field_Display='%s'
ORDER BY ft.Field_ID ASC";
$Fields = $wpdb->get_results($wpdb->prepare($SQL, $field_group, $Page_ID, $display));
}
[end code]
How can I combine these into one query that fills the result array the way described above?
I thought of a SELECT inside a SELECT, but my php foo is a little under trained at the moment.
Not sure how to do such and achieve the results I am after. Any help would be appreciated.
TIA
Best,
Karl DeSaulniers
Design Drumm
http://designdrumm.com