我怎样才能使这个 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 = ?
  1. 从 select 字段列表中删除 trainers.name
  2. 添加 JOIN 人 tname ON person.id = trainers.trainer_id
  3. 将 tname.name 添加到 select 字段列表

应该可以(如果我没看错的话)