在编写具有多个连接的查询时遇到问题

Posted

技术标签:

【中文标题】在编写具有多个连接的查询时遇到问题【英文标题】:Having issues writing query with multiple joins 【发布时间】:2019-11-16 03:03:57 【问题描述】:

我正在尝试编写一个显示客户 ID、名字、姓氏和返回日期的查询。我需要弄清楚谁是最后一个租借这部电影的人。我知道我需要密切关注 INVENTORY、FILM、RENTAL 和 CUSTOMER 表。我只是不知道怎么写。

这就是我所拥有的:

SELECT DISTINCT 
    customer.customer_id, customer.first_name,
    customer.last_name, rental.customer_id, rental.return_date 
FROM
    customer, rental 
WHERE 
    customer.customer_id = rental.customer_id 

This is the model

Tables and columns

【问题讨论】:

您的模型无法访问 我在您发布的模型中没有看到 rent.return_date。 您必须提供更多细节。例如,您是否在任何地方都有时间信息?或者rental_id 总是一个递增的序列?我猜一旦你设法加入表格,那么相关列的降序顺序应该可以完成这项工作。该相关列可以是时间/日期列或序列列。请考虑提供更多信息。 我已经添加了有问题的表格和列。抱歉,我应该在我的原始帖子中添加这些内容。租赁表中有时间信息。不知道这次我是否更清楚了。 Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它 【参考方案1】:

你提供的信息很难说,但你可以试试这个:

SELECT customer.customer_id, customer.first_name, customer.last_name, rental.customer_id, rental.return_date
FROM customer FULL JOIN rental
ON  customer.customer_id=rental.customer_id 
WHERE rental.return_date=(
    SELECT MAX(return_date)
    FROM rental
);

您还可以使用 INNER、LEFT 或 RIGHT JOIN。你选择什么取决于你的模型。 PostgreSQL Joins

【讨论】:

哇,这太棒了!我想我对如何编写查询有所了解。我基本上需要找出哪个客户租了电影,所以我需要从 RENTAL 列中添加 TITLE ......我想。对不起,如果我不是很清楚,英语不是我的第一语言。

以上是关于在编写具有多个连接的查询时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

具有多个连接的 MySQL 查询的低效执行计划

错误 - 具有多个数据库连接的 LINQ/TransactionScope

创建具有多个表的视图?

在编写查询 laravel 时遇到问题

Rails 3 - 具有连接条件的多个数据库

Codeigniter 中的多个连接