[AccessD] SQL help

Pete Phillipps pete at vftt.co.uk
Sun Dec 14 08:57:59 CST 2008


Hi Gustav,

	Genius, that works perfect!

	Thanks to everyone for their help, wasn't actually sure if it was
gonna be possible to do using a query.

Pete

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: 14 December 2008 09:05
To: accessd at databaseadvisors.com
Subject: Re: [AccessD] SQL help

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


--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com No virus found in this incoming
message.
Checked by AVG - http://www.avg.com
Version: 8.0.176 / Virus Database: 270.9.17/1846 - Release Date: 12/12/2008
18:59




More information about the AccessD mailing list