"Imran" <[EMAIL PROTECTED]> wrote on 10/10/2005 03:52:21 PM:

> Hi all:
> I need some help in writing a sql statement.
> 
> I have three tables (Sales, Cust and Product). The sales table contains 
a
> large volume of data and I want to create a sql to group the sales table
> then join the resultant to both the Cust and Prod and to have additional
> fields selected from the Cust and Prod.
>
> So in effect something like (obviously syntax is wrong)
> 
> Select sm.prodno, sm.custno, sum(cost) as costs, sum(sales) as sales,
> sm.date
>
> from Sales SM where sm.date <= date(‘2005-09-01 00:00:00’) Group by
> sm.prodno, sm.custno, sm.date ,
> 
> (Select prod.desc, prod.code, cust.custno, cust.name from cust, Prod) 
left
> join sm.prodno = prod.code left join sm.custno=cust.custno) …
> 
> Any help would be greatly appreciated.
> 

OK, you know you need a GROUP BY, that's good. You also recognized you 
needed to JOIN a few tables together, also good. There are at least two 
ways to do what you ask. One is a fairly complex query that does it all in 
one statement (might take a long time to compute) the other is a sequence 
of two simpler statements. I think the two-statement solution will be 
easier to understand and maintain so I would prefer to go over that. 
However, in order to provide an example of either method I will need more 
information from you.

From the CLI (command line client), please provide the output from these 
three commands:

SHOW CREATE TABLE sales\G;
SHOW CREATE TABLE cust\G;
SHOW CREATE TABLE product\G;

That will tell me exactly which columns live on which tables and where you 
do or do not have any indexes. Good indexes will make or break the 
performance of your database. You will not be exposing any data, only the 
design of the tables.

Please remember to CC the list on all responses.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine


Reply via email to