我需要帮助编写查询以获取一些信息,但我在编写它时遇到困难。通过联合嵌套查询和分组(SQL)
[table_People]
int id
var name
[table_Tools]
int id
var name
[table_Activity1]
int person_id
int tool_id
date delivery_date
[table_Activity2]
int person_id
int tool_id
date installation_date
查询需要返回所有的人的名单,他们在任何活动1或2(两者之间发生的最近期的活动)最近使用的工具的名称。
SELECT
people.id AS personId,
people.name AS personName,
(
SELECT
tools.name AS toolName
FROM
activity1
JOIN
tools ON tools.id=activity1.tool_id
WHERE
activity1.id=people.id
UNION ALL
SELECT
tools.name AS toolName
FROM
activity2
JOIN
tools ON tools.id=activity2.tool_id
WHERE
activity2.id=people.id
ORDER BY
installationDate,deliveryDate
) AS toolName
FROM
people
ORDER BY
people.name
ASC
我遇到的问题是我无法按日期排序(发送或安装),因为我收到错误,因为它们是不同的列名称。
由于子查询返回多个行,因此提供的查询不应起作用。 – nawfal
“Activity1”和“Activity2”的主键是什么? –