No exactly Peter.
What I want is a single report that tell me the debt per transaction.
Something like
Transaction Purchased Payed Debt
1 8 8 0
so a "Group by" operation must be involved.
The main problem is that if I join the three tables with the query you wrote I get
something like (i took some fields off for this discussion)
Transaction purchased_product.price payed_amount.amount
1 5 8
1 3 8
And as you can see the payed amout appears twice. If we involve the "Group by"
operation with that query we'll get an incorrect result; the amount payed will be 16
instead of 8.
I believe that the query result, before the "Group by" operation must be something like
Transaction purchased_product.price payed_amount.amount
1 NULL 8
1 5 NULL
1 3 NULL
after all, purchased_product and payed_amount are not related directly.
In order to solve this with views I first create a view with the total by transaction
from purchased_product, then a view with the total by transaction from payed_amout and
finally join transaction with both views, but I haven't seen support for views in
mySQL. The problem can also be solved with subqueries or writing a PHP or Pearl
script. However I'm using a generic SQL reporting tool, so my only chance is to use
pure SQL instructions.
----- Original Message -----
From: Peter Brawley
To: Ernesto Silva ; [EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 1:10 AM
Subject: Re: Joining data
Ernesto,
Are you looking for this?
SELECT *
FROM transaction
INNER JOIN purchased_product ON transaction.number=purchased_product.transaction
INNER JOIN payed_amount ON purchased_product.transaction=payed_amount.transaction
WHERE transaction.number=1;
PB
----- Original Message -----
From: Ernesto Silva
To: [EMAIL PROTECTED]
Sent: Monday, June 09, 2003 8:07 PM
Subject: Joining data
I have three tables, to model a purchasing system:
transaction
number
client
date
purchased_product
transaction
product
price
payed_amount
transaction
date
amount
This model allows me to have a transaction with multiple products and also
record several payments on the trasaction, so a client can pay just a
fraction of the purchased total and come later and pay the rest.
However creating a debt report in a single query results somehow dificult. I
know how to do it with views in Oracle, but mySQL seems lack from them.
If I relate the three tables in one query, some quantities appear multiple
times. Suppose we have one transaction with two products and one payment.
transaction
number client date
1 Joe Doe June 10th
purchased_product
transaction product price
1 glass 5
1 spoon 3
payed_amount
transaction date amount
1 June 10th 8
And the query in the regular way to do it is:
Select *
>From transaction, purchased_product, payed_amount
Where transaction.number = purchased_product.transaction
And transaction.number = payec_amout.transaction
Of course this gives me the payed amount twice.
What I need to do at the end is a report with all the clients that own to
the store.
Is my model wrong?, Any ideas, please
Ernesto
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]