我有两张桌子,
professors:
和classes:
我希望通过使用表示教授姓名的字符串来执行查询,然后从id匹配查询教授的id的类中选择行,但所有这些行都在一个查询中。如果不做两个查询,首先选择id然后选择类,我无法想出一个简单的方法。
示例:select * from classes where id = (select id from professors where name = "some professor name")
据我所知,这在语法上是不正确的,但希望它可以让您了解我想要的内容。
答案 0 :(得分:2)
你想要一个INNER JOIN
SELECT c.*
FROM classes c INNER JOIN professors p on c.id = p.id
WHERE p.name='some professor name'
答案 1 :(得分:1)
您正在寻找JOIN
。
SELECT
c.*
FROM
classes c
JOIN
professors p ON c.professor = c.id
WHERE
p.name = "some professor name"
答案 2 :(得分:1)
试试这个
SELECT *
FROM CLASSES C INNER JOIN PROFESSOR P ON
C.professor = P.ID
WHERE P.Name = 'professor name'
(OR)
SELECT *
FROM CLASSES,PROFESSOR
WHERE CLASSES.professor = PROFESSOR.ID AND
PROFESSOR.Name = 'professor name'
答案 3 :(得分:1)
你非常接近。
SELECT something, something
FROM classes
WHERE professor IN
( SELECT DISTINCT id
FROM professors
WHERE name = 'name'
)
你缺少的技巧是IN ( )
。这允许您构造一组要搜索的ID号。
你可以用
做得更好 WHERE name LIKE 'name%'
如果你不完全确定教授的名字。
专业提示:避免SELECT *
,而是提供您需要检索的列的列表。