2 statements in to 1
am 20.05.2006 16:13:29 von Peter Lewis
I'm not sure if this can be done, but I would like to turn 2 statements in
to 1
The 1st one returns 2 fields "Bank" and "Advertmode"
SELECT bank1, advertmode1 FROM conf WHERE (id = "XYZ")
The 2nd one uses the "Bank" field to know what to get and the "Advertmode"
is used to set a flag
SELECT * FROM profiles WHERE (customer = "TheCustomers") AND (profile_name1
= "Bank1")
I need to end up with 4 fields that I can use
filename1 (from profiles table)
description1 (from profiles table)
supplier1 (from profiles table)
advertmode1 (from conf table)
This statement will be run 14 times to gather the fields 1 to 14 (eg
filename1, filename2, filename3 etc) so I am trying to make it quicker to
run
Can this be done?
Brian
Re: 2 statements in to 1
am 20.05.2006 18:41:22 von nc
Brian wrote:
>
> I'm not sure if this can be done, but I would like to turn
> 2 statements in to 1
>
> The 1st one returns 2 fields "Bank" and "Advertmode"
>
> SELECT bank1, advertmode1 FROM conf WHERE (id = "XYZ")
>
> The 2nd one uses the "Bank" field to know what to get and the "Advertmode"
> is used to set a flag
>
> SELECT * FROM profiles WHERE (customer = "TheCustomers")
> AND (profile_name1 = "Bank1")
>
> I need to end up with 4 fields that I can use
>
> filename1 (from profiles table)
> description1 (from profiles table)
> supplier1 (from profiles table)
> advertmode1 (from conf table)
This might help:
SELECT conf.bank1 AS bank1,
conf.advertmode1 AS advertmode1,
profiles.filename1 AS filename1,
profiles.description1 AS description1
FROM conf LEFT JOIN profiles
ON conf.bank1 = profiles.profile_name1
WHERE customer = "TheCustomers";
For best performance, all fields mentioned in JOIN and WHERE clauses
shuld be indexed.
> This statement will be run 14 times to gather the fields
> 1 to 14 (eg filename1, filename2, filename3 etc) so I am
> trying to make it quicker to run
It seems to me your data architecture could use some improvement...
Cheers,
NC
Re: 2 statements in to 1
am 23.05.2006 15:28:01 von Peter Lewis
>> I'm not sure if this can be done, but I would like to turn
>> 2 statements in to 1
>>
>> The 1st one returns 2 fields "Bank" and "Advertmode"
>>
>> SELECT bank1, advertmode1 FROM conf WHERE (id = "XYZ")
>>
>> The 2nd one uses the "Bank" field to know what to get and the
>> "Advertmode"
>> is used to set a flag
>>
>> SELECT * FROM profiles WHERE (customer = "TheCustomers")
>> AND (profile_name1 = "Bank1")
>>
>> I need to end up with 4 fields that I can use
>>
>> filename1 (from profiles table)
>> description1 (from profiles table)
>> supplier1 (from profiles table)
>> advertmode1 (from conf table)
>
> This might help:
>
> SELECT conf.bank1 AS bank1,
> conf.advertmode1 AS advertmode1,
> profiles.filename1 AS filename1,
> profiles.description1 AS description1
> FROM conf LEFT JOIN profiles
> ON conf.bank1 = profiles.profile_name1
> WHERE customer = "TheCustomers";
>
> For best performance, all fields mentioned in JOIN and WHERE clauses
> shuld be indexed.
>
>> This statement will be run 14 times to gather the fields
>> 1 to 14 (eg filename1, filename2, filename3 etc) so I am
>> trying to make it quicker to run
>
> It seems to me your data architecture could use some improvement...
Hi NC
Thanks for your help it's all working now, I think I confused you of
something
which was my fault, the whole statement is being run once, but the statement
is
being built up with 14 x advertmode1, filename1, description1,
.....advertmode14, filename14, description14,
Brian