<shaun thornburgh wrote>
Hi,
I have a problem with a SELECT query. I have a users table and each user
can
be a Rep, Nurse or Administrator defined by User_Type. Each Rep has two
Nurses allocated to them and the User_ID of the nurse is held in column
Rep_Nurse_1 and Rep_Nurse_2. I am trying to perform a query that returns
the
two nurses details based on the User_ID of the Rep:
SELECT U1.*, U2.*rse_2
However this returns just the first nurse allocated to that rep.
I have listed my User table defination below and would be most grateful for
anyones advice here.
----------8< SNIP 8<-----------
</shaun>
Shaun,
The problem is in your WHERE clause. You need an OR for the last AND (and a
set of parentheses, too)
SELECT U1.*, U2.* FROM Users U1, Users U2, Users R
WHERE R.User_ID = 'x'
AND (
U1.User_ID = R.Rep_Nurse_1
OR U2.User_ID = R.Rep_Nurse_2
)
Another way to write this is through JOINS
SELECT U1.*, U2.* FROM Users R
LEFT JOIN Users U1
ON U1.User_ID = R.Rep_Nurse_1
LEFT JOIN Users U2
ON U2.User_ID = R.Rep_Nurse_1
WHERE R.User_ID = 'x'
Both of those will give you two sets of columns (2x the same column names
in the same query).If you had a field called Name in your Users table, you
would have two of them in your results. One way to get it down to a single
set of columns would be to use a UNION query (depending on which version of
MySQL you are running). The advantage to this is that if a Rep only has 1
nurse assigned to them, you only get one row of data and not a whole set of
NULL values in the duplicate columns.
SELECT U1.* FROM Users R
INNER JOIN Users U1
ON U1.User_ID = R.Rep_Nurse_1
WHERE R.User_ID = 'x'
UNION
SELECT U2.* FROM Users R
INNER JOIN Users U2
ON U2.User_ID = R.Rep_Nurse_1
WHERE R.User_ID = 'x'
There is still another method that involves a lot of IF statements but
since you didn't post the column names for your Users table, I can't work
it up for you.
Hope this helps!
Shawn Green
Database Administrator
Unimin Corporation
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]