Gustav Brock
gustav at cactus.dk
Sun Dec 14 03:04:38 CST 2008
Hi Pete
This can be achieved with a Cartesian join and a single subquery to pick the comments like this:
PARAMETERS CustomerID Long;
SELECT
tblTable1.*,
tblTable3.CusID,
tblTable3.CusName,
(Select
Comment
From
tblTable2 As T
Where
T.CusID=tblTable3.CusID
And
T.ConID=tblTable1.ConID) AS
Comment
FROM
tblTable1,
tblTable3
WHERE
tblTable3.CusID=[CustomerID]
AND
tblTable1.Req=True;
ConID Desc Req CusID CusName Comment
1 A1 Yes 1 Fred
2 A2 Yes 1 Fred Yes
5 A5 Yes 1 Fred
1 A1 Yes 2 Daphne Me
2 A2 Yes 2 Daphne Word
5 A5 Yes 2 Daphne
1 A1 Yes 3 Scooby
2 A2 Yes 3 Scooby
5 A5 Yes 3 Scooby
/gustav
>>> pete at vftt.co.uk 13-12-2008 20:50 >>>
Hi Everyone,
I am trying to get some data from the following tables into a list.
The basics of the tables are shown below:
TABLE 1
ConID Desc Req
1 A1 Yes
2 A2 Yes
3 A3 No
4 A3 No
5 A5 Yes
TABLE 2
CusID ConID Comment
1 2 Yes
1 3 Yep
2 1 Me
2 2 Word
TABLE 3
CusID Name
1 Fred
2 Daphne
3 Scooby
What I want is to select a customer from table 3 and get a list of
all items from table 1 where Req is Yes, along with any matching comment
from table 2 for that customer (if there are any), like the following
examples:
ConID Desc Req CusID Comment
1 A1 Yes 1
2 A2 Yes 1 Yes
5 A5 Yes 1
ConID Desc Req CusID Comment
1 A1 Yes 2 Me
2 A2 Yes 2 Word
5 A5 Yes 2
ConID Desc Req CusID Comment
1 A1 Yes 3
2 A2 Yes 3
5 A5 Yes 3
What I can't do is get a SQL join that will bring up the results
like that. I've tried the following:
SELECT Table1.ConID, Table1.Desc, Table1.Req, Table2.CusID, Table2.Comment
FROM Table2 RIGHT JOIN Table1 ON Table2.ConID = Table1.ConID
WHERE (((Table1.Req)<>0) AND ((Table2.CusID)=1))
ORDER BY Table1.ConID, Table2.CusID;
But that just produces (for customer 1) the following:
ConID Desc Req CusID Comment
2 A2 Yes 1 Yes
How can I construct the SQL to produce the result as required?
Pete