RE: JOIN based query problem (little help needed)

2002-12-18 Thread Adolfo Bello
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

JOIN based query problem (little help needed)

2002-12-17 Thread Gigi Di Leo
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