此查询过去工作正常,但是培训师表不再包含名称字段,因此很明显它不再起作用。培训师表包含person_id,培训师是人员表中的人员。使用其他一些机制(嵌套选择,自联接,...)我需要从培训师表中获取person_id,然后从人员表中获取培训师名称,然后以与原始查询相同的格式返回信息。这可以用一个陈述来完成吗?
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
答案 0 :(得分:3)
是的,只需与人进行额外的加入。另外:养成为你加入的每个表使用别名的习惯。它增加了可读性,你必须减少输入。
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 :(得分:0)
应该这样做(如果我正确阅读你的文字)