我有以下查询:
SELECT cust_FNAME,cust_LNAME,m.movie_title,r.requested_date
FROM Rentalqueue r
RIGHT JOIN Movie m ON r.movie_ID = m.movie_ID
LEFT JOIN Customer c ON r.customer_ID = c.customer_ID
WHERE r.customer_ID = 2
GROUP BY cust_FNAME,cust_LNAME,m.movie_title,r.requested_date;
问题是客户名称显示为NULL。我做错了什么?
答案 0 :(得分:1)
试试这个: -
SELECT Customer.cust_FNAME, Customer.cust_LNAME, Movie.movie_title, Rentalqueue.requested_date
FROM Customer, Rentalqueue, Movie
WHERE Rentalqueue.movie_ID = Movie.movie_ID
AND Rentalqueue.customer_ID = Customer.customer_ID
AND Rentalqueue.customer_ID = 2
ORDER BY Customer.cust_FNAME, Customer.cust_LNAME, Movie.movie_title, Rentalqueue.requested_date
答案 1 :(得分:0)
从基础开始:首先,测试实际上是否有customer_id = 2
的客户。
SELECT cust_FNAME, cust_LNAME FROM Customer where customer_id = 2;
如果返回零行或者名称作为NULL
值返回,那么就会出现问题 - 您要么没有要加入的行,要么数据正确显示NULL
值。
除此之外 - 请发布SQLFIDDLE表格结构和一些示例数据,说明您的问题。
顺便一提 - 您在LEFT OUTER JOIN
和RentalQueue
之间进行了Customer
,但您似乎期待NULL
中的非Customer
返回如果始终如此,您可以将LEFT OUTER JOIN
替换为INNER JOIN
:
SELECT DISTINCT
cust_FNAME,
cust_LNAME,
m.movie_title,
r.requested_date
FROM Rentalqueue r
RIGHT OUTER JOIN Movie m
ON ( r.movie_ID = m.movie_ID )
INNER JOIN Customer c
ON ( r.customer_ID = c.customer_ID )
WHERE r.customer_ID = 2;