________________________________
From: Andy Shellam <andy-lists@stripped>
To: Lamp Lists <lamp.lists@stripped>
Cc: mysql@stripped
Sent: Wednesday, December 17, 2008 2:48:31 PM
Subject: Re: need help with query...
Hi,
>
> Hi Andy,
> the reason I can't use this because fields (columns) in select statement
> (p.first_name, p.last_name,...) are actually dynamically created. In my project different
> client will select different fields to be shown. 99% will select first_name, and
> last_name, but some don't care about date_registered, some will need more org data...
>
> actually, it will be more this way:
>
> SELECT {$selected_fields} FROM people p, organization o. addresses a
> WHERE ...
>
> where
> $selected_fields = "p.first_name, p.last_name, o.org_name"
> or
> $selected_fields = "p.first_name, p.last_name, o.org_name, a.address, a.city,
> a.state, a.zip"
> or
> $selected_fields = "o.org_name, a.address, a.city, a.state, a.zip"
So just tag "AS table_field_name" to each field when you're building your list of
$selected_fields - e.g.
$selected_fields = "p.first_name AS person_first_name, p.last_name AS person_last_name,
o.org_name AS organization_org_name"
You don't have to use the full table name either - for example in the following statement,
you would then access the data using $result['p']['first_name'];
$selected_fields = "p.first_name AS p_first_name, p.last_name AS p_last_name, o.org_name
AS o_org_name"
This approach is actually easier if you're creating the query dynamically, because you
don't have to manually type a load of "AS xxx" statements after every field.
I've recently done something similar in one of my applications to wrap date/time fields in
either FROM_UNIXTIME() or UNIX_TIMESTAMP() functions.
Andy
Yup! That'll do it!
Thanks Andy
;-)