在JOIN上显示NULL的名称文件

时间:2013-12-07 01:58:34

标签: oracle join

我有以下查询:

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。我做错了什么?

2 个答案:

答案 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 JOINRentalQueue之间进行了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;