Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为每个客户X写一个查询,另一个客户Y至少与X共租了一部电影_Mysql_Sql - Fatal编程技术网

Mysql 为每个客户X写一个查询,另一个客户Y至少与X共租了一部电影

Mysql 为每个客户X写一个查询,另一个客户Y至少与X共租了一部电影,mysql,sql,Mysql,Sql,使用sakila数据库,编写一个查询,为每个客户X查找另一个客户Y,该客户Y至少租用了一部与X相同的电影。查找所有此类客户对X、Y,并针对每对客户查找重叠电影的数量。按重叠电影的数量排序结果 我尝试过使用别名、内部联接和子查询。但是,我相信我的代码有语法错误 选择o1.customer\u id作为CustomerID1, o2.客户id作为客户2, 计数*无需翻拍电影 从中选择c.客户id、f.胶片id 从客户身份c, 以r的身份加入租赁公司 在r.customer\u id=c.custom

使用sakila数据库,编写一个查询,为每个客户X查找另一个客户Y,该客户Y至少租用了一部与X相同的电影。查找所有此类客户对X、Y,并针对每对客户查找重叠电影的数量。按重叠电影的数量排序结果

我尝试过使用别名、内部联接和子查询。但是,我相信我的代码有语法错误

选择o1.customer\u id作为CustomerID1, o2.客户id作为客户2, 计数*无需翻拍电影 从中选择c.客户id、f.胶片id 从客户身份c, 以r的身份加入租赁公司 在r.customer\u id=c.customer\u id上 以i.inventory\u id=r.inventory\u id上的i加入库存 在i.film\u id=f.film\u id上以f的身份加入film AS o1 加入选择c.customer\u id、f.film\u id 从客户身份c, 以r的身份加入租赁公司 在r.customer\u id=c.customer\u id上 以i.inventory\u id=r.inventory\u id上的i加入库存 在i.film\u id=f.film\u id上以f的身份加入film 作为o2 在o2.film_id=o1.film_id和o2.customer_id查询应该有3列。CustomerID1、CustomerID2和NoOfOverlappingMovies。

1请勿在FROM和JOIN零件之间使用

你的括号有点不对。在没有桌子的情况下,我尽可能地纠正它们:

SELECT o1.customer_id AS CustomerID1,
       o2.customer_id AS CustomerID2,
       COUNT(*) NoOfOverlappingMovies
FROM( (SELECT c.customer_id, f.film_id
        FROM customer AS c
        JOIN rental AS r ON r.customer_id = c.customer_id
        JOIN inventory AS i ON i.inventory_id = r.inventory_id
        JOIN film AS f ON i.film_id = f.film_id
        ) AS o1
        JOIN (SELECT c.customer_id, f.film_id
                FROM customer AS c
                JOIN rental AS r ON r.customer_id = c.customer_id
                JOIN inventory AS i ON i.inventory_id = r.inventory_id
                JOIN film AS f ON i.film_id = f.film_id
    ) AS o2 ON o2.film_id = o1.film_id AND o2.customer_id < o1.customer_id )
GROUP BY o1.customer_id, o2.customer_id
ORDER BY COUNT(*) DESC;

问题似乎是:

select r1.customer_id, r2.customer_id,
       count(distinct r1.film_id) as num_films
from rental r1 join
     rental r2
     on r1.film_id = r2.film_id and
        r1.customer_id < r2.customer_id
group by r1.customer_id, r2.customer_id
order by num_films desc;

这个查询似乎不需要其他表。

那么是MySQL,而不是SQL Server?这段开头的内容就像是一个家庭作业问题。但是,按计数*DESC排序是无效的T-SQL。