Hello SQL Gurus

I am trying to write an sql statement that will return a row which contains
vendor info, how much he owes, total payments and balance due.

The results should look like this :

ABC,VENDOR ONE,333.33,199.98,133.35
DEF,VENDOR TWO,333.33, 0.00,333.33

The statement uses 3 tables and contains following data

//////////////// VENDORS \\\\\\\\\\\\\\\\\\\\\\
CREATE TABLE vendor (
   vendorno varchar(10) NOT NULL,
   vendorname varchar(30) NOT NULL
);
INSERT INTO vendor VALUES( 'ABC', 'VENDOR ABC');
INSERT INTO vendor VALUES( 'DEF', 'VENDOR DEF');

//////////////// INVOICES \\\\\\\\\\\\\\\\\\\\\\
CREATE TABLE invoices (
   vendorno varchar(10) NOT NULL,
   invdate date DEFAULT '0000-00-00' NOT NULL,
   invoiceno varchar(10) NOT NULL,
   total decimal(10,2) DEFAULT '0.00' NOT NULL
);
INSERT INTO invoices VALUES( 'ABC', '2002-02-01', '101', '111.11');
INSERT INTO invoices VALUES( 'ABC', '2002-02-02', '102', '222.22');
INSERT INTO invoices VALUES( 'DEF', '2002-02-02', '103', '333.33');

//////////////// PAYMENTS \\\\\\\\\\\\\\\\\\\\\\
CREATE TABLE payments (
   vendorno varchar(10) NOT NULL,
   paydate date DEFAULT '0000-00-00' NOT NULL,
   invoiceno varchar(10) NOT NULL,
   paid decimal(10,2) DEFAULT '0.00' NOT NULL
);
INSERT INTO payments VALUES( 'ABC', '2002-03-01', '101', '55.55');
INSERT INTO payments VALUES( 'ABC', '2002-03-03', '102', '66.66');
INSERT INTO payments VALUES( 'ABC', '2002-03-04', '102', '77.77');


/////// DETAILED SQL STATEMENT \\\\\\\\\\\\\\\\\
I have tried this statement which returns a detailed listing but what I want
is a summarized listing


select vendor.vendorno,vendor.vendorname,invoices.total, (payments.paid) ,
(invoices.total-payments.paid) as balance from vendor
LEFT JOIN invoices on (vendor.vendorno=invoices.vendorno)
LEFT JOIN payments on (vendor.vendorno=payments.vendorno) and
(invoices.invoiceno=payments.invoiceno)
order by vendor.vendorno


////// SUMMARIZED STATEMENT \\\\\
This summarized listing returns duplicate values for total and balance.

select vendor.vendorno,vendor.vendorname,sum(invoices.total),
sum(payments.paid) ,
sum(invoices.total-payments.paid) as balance from vendor
LEFT JOIN invoices on  (vendor.vendorno=invoices.vendorno)
LEFT JOIN payments on (vendor.vendorno=payments.vendorno) and
(invoices.invoiceno=payments.invoiceno)
group  by vendor.vendorno


Am using Mysql 3.23.47 NT



---------------------------------------------------------------------
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