Hi Gigi:

I got a 2 steps solution to your problem:

1.- Create a TEMPORARY TABLE with
        CREATE TEMPORARY TABLE anyname SELECT
t1.id,t1.description,SUM(t2.quantities) AS Purchases,t3.quantities FROM
products t1 INNER JOIN purchases t2 ON t1.id=t2.id INNER JOIN sellings
t3 ON t1.id=t3.id GROUP BY t1.id.t1.description,t3.quantities;

2.- SELECT FROM anyname id,description,Purchases, SUM(quantities) AS
Sellings, (Purchases-SUM(quantities)) AS Inventory GROUP BY
id,description,Purchases;

Adolfo

> -----Original Message-----
> From: Gigi Di Leo [mailto:[EMAIL PROTECTED]] 
> Sent: Tuesday, December 17, 2002 11:53 AM
> To: [EMAIL PROTECTED]
> Subject: JOIN based query problem (little help needed)
> 
> 
> Hello list.
> 
> Please help me to refine a JOIN based query which I am not 
> able to correct. This the scenario (simplified).
> 
> Three tables:
> 
> Products
> -----------------------------
> | id | description          |
> -----------------------------
> | 01 | bread                |
> | 02 | milk                 |
> | 03 | coffee               |
> -----------------------------
> 
> Purchases
> -----------------------------
> | prod_id | quantities      |
> -----------------------------
> |   01    | 10              |
> |   02    | 5               |
> |   03    | 3               |
> -----------------------------
> 
> Sellings
> -----------------------------
> | prod_id | quantities      |
> -----------------------------
> |   01    | 3               |
> |   01    | 1               |
> |   02    | 1               |
> |   02    | 1               |
> -----------------------------
> 
> This the query which I could figure out:
> 
> SELECT products.*, 
>        SUM(purchases.quantity) AS purchases, 
>        SUM(sellings.quantity) AS sellings,
>        SUM(purchases.quantity)-SUM(sellings.quantity) AS 
> inventory FROM products LEFT JOIN purchases ON 
> products.id=purchases.prod_id LEFT JOIN sellings ON 
> products.id=sellings.prod_id GROUP BY products.id ORDER BY products.id
> 
> The query should return:
> ---------------------------------------------------------------------
> | prod_id | description          | purchases | sellings | inventory |
> ---------------------------------------------------------------------
> |    01   | bread                |    10     |   4      |     6     |
> |    02   | milk                 |    5      |   2      |     3     |
> |    03   | coffee               |    3      |   0      |     3     |
> ---------------------------------------------------------------------
> 
> This is what the query actually returns:
> ---------------------------------------------------------------------
> | prod_id | description          | purchases | sellings | inventory |
> ---------------------------------------------------------------------
> |    01   | bread                |    20     |   4      |    16     |
> |    02   | milk                 |    10     |   2      |     8     |
> |    03   | coffee               |    3      |   0      |     3     |
> ---------------------------------------------------------------------
> 
> Thank you very much for your help.
> 
> Gigi
> 
> 
> Here is the database dump if you wish to reproduce the scenario:
> 
> # phpMyAdmin MySQL-Dump
> # version 2.3.2
> # http://www.phpmyadmin.net/ (download page)
> #
> # Host: localhost
> # Generato il: 17 Dic, 2002 at 04:45 PM
> # Versione MySQL: 3.23.53
> # Versione PHP: 4.2.3
> # Database : `inventory`
> # --------------------------------------------------------
> 
> #
> # Struttura della tabella `products`
> #
> 
> CREATE TABLE products (
>   id int(11) NOT NULL auto_increment,
>   description varchar(64) NOT NULL default '',
>   PRIMARY KEY  (id),
>   KEY id (id)
> ) TYPE=MyISAM;
> 
> #
> # Dump dei dati per la tabella `products`
> #
> 
> INSERT INTO products VALUES (1, 'bread');
> INSERT INTO products VALUES (2, 'milk');
> INSERT INTO products VALUES (3, 'coffee');
> # --------------------------------------------------------
> 
> #
> # Struttura della tabella `purchases`
> #
> 
> CREATE TABLE purchases (
>   prod_id int(11) NOT NULL default '0',
>   quantity int(11) NOT NULL default '0',
>   KEY prod_id (prod_id)
> ) TYPE=MyISAM;
> 
> #
> # Dump dei dati per la tabella `purchases`
> #
> 
> INSERT INTO purchases VALUES (1, 10);
> INSERT INTO purchases VALUES (2, 5);
> INSERT INTO purchases VALUES (3, 3);
> # --------------------------------------------------------
> 
> #
> # Struttura della tabella `sellings`
> #
> 
> CREATE TABLE sellings (
>   prod_id int(11) NOT NULL default '0',
>   quantity int(11) NOT NULL default '0',
>   KEY prod_id (prod_id)
> ) TYPE=MyISAM;
> 
> #
> # Dump dei dati per la tabella `sellings`
> #
> 
> INSERT INTO sellings VALUES (1, 3);
> INSERT INTO sellings VALUES (1, 1);
> INSERT INTO sellings VALUES (2, 1);
> INSERT INTO sellings VALUES (2, 1);
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail 
> <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
> 
> 
> 
> 


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to