我怎样才能使这个 SQL 查询再次工作
How can I make this SQL query work again
此查询过去工作正常,但培训师 table 不再包含名称字段,因此显然它不再工作了。培训师 table 确实包含 person_id 并且培训师是人 table 中的一个人。使用其他一些机制(嵌套 select、自连接、...)我需要从培训师 table 那里获得 person_id,然后从人员 [=18] 那里获得培训师姓名=],然后 return 与原始查询格式相同的信息。这可以用一个语句来完成吗?
SELECT
entries.entry_id, entries.entry_no, dogs.name,
persons.name, trainers.name
FROM
entries
JOIN
dogs ON entries.dog_id = dogs.dog_id
JOIN
persons ON dogs.owner = persons.person_id
JOIN
trainers ON entries.trainer_id = trainers.trainer_id
WHERE
entries.show_id = 5
是的,只需与人进行额外的连接。另外:养成为每个加入的 table 使用别名的习惯。它提高了可读性,你必须减少输入。
SELECT e.entry_id, e.entry_no, d.name, p.name, tp.name
FROM entries e
JOIN dogs d ON e.dog_id = d.dog_id
JOIN persons p ON d.owner = p.person_id
JOIN trainers t ON e.trainer_id = t.trainer_id
JOIN persons tp ON tp.person_id = t.person_id
WHERE e.show_id = ?
- 从 select 字段列表中删除 trainers.name
- 添加 JOIN 人 tname ON person.id = trainers.trainer_id
- 将 tname.name 添加到 select 字段列表
应该可以(如果我没看错的话)
此查询过去工作正常,但培训师 table 不再包含名称字段,因此显然它不再工作了。培训师 table 确实包含 person_id 并且培训师是人 table 中的一个人。使用其他一些机制(嵌套 select、自连接、...)我需要从培训师 table 那里获得 person_id,然后从人员 [=18] 那里获得培训师姓名=],然后 return 与原始查询格式相同的信息。这可以用一个语句来完成吗?
SELECT
entries.entry_id, entries.entry_no, dogs.name,
persons.name, trainers.name
FROM
entries
JOIN
dogs ON entries.dog_id = dogs.dog_id
JOIN
persons ON dogs.owner = persons.person_id
JOIN
trainers ON entries.trainer_id = trainers.trainer_id
WHERE
entries.show_id = 5
是的,只需与人进行额外的连接。另外:养成为每个加入的 table 使用别名的习惯。它提高了可读性,你必须减少输入。
SELECT e.entry_id, e.entry_no, d.name, p.name, tp.name
FROM entries e
JOIN dogs d ON e.dog_id = d.dog_id
JOIN persons p ON d.owner = p.person_id
JOIN trainers t ON e.trainer_id = t.trainer_id
JOIN persons tp ON tp.person_id = t.person_id
WHERE e.show_id = ?
- 从 select 字段列表中删除 trainers.name
- 添加 JOIN 人 tname ON person.id = trainers.trainer_id
- 将 tname.name 添加到 select 字段列表
应该可以(如果我没看错的话)