0

如果这看起来很简单,我提前道歉,因为我的作业需要在 3 小时内通过,而且我没有足够的时间做进一步的研究,因为我今晚有另一个待提交的作业。我只知道基本的 MYSQL 命令,不知道这些类型。请帮忙。

假设我有两张桌子:

   ________________     _________________
  |    customers   |   |     agents      |
  |________________|   |_________________|
  |(pk)customer id |   |(pk) agent_id    |
  |(fk) agent_id   |   |    first_name   |
  |   first_name   |   |    last_name    |
  |   last_name    |   |     address     |
  |________________|   |_________________|

基本上我只想知道如何查询类似:(用不正确的术语)

SELECT * FROM customers WHERE agent_id = '(agent_id of Michael Smith from the AGENTS table)'

显然我只有代理的agent_id,如果我知道代理名称是什么,我可以直接调用它,例如: SELECT * FROM customers WHERE agent_id = '4'

但是我如何通过提交代理的名字和姓氏作为参数来查询它?(名字和姓氏,因为代理人可以有相同的名字,甚至可以有相同的姓氏)

4

2 回答 2

2

请记住,您的外键并不能帮助您构建查询,您必须告诉数据库您在查询中想要什么(但是,外键可以帮助跨表分布的数据更加一致)。

你可以在JOIN这里使用。

你可以像这样实现它:

SELECT * 
FROM customers C
INNER JOIN agents A ON C.agent_id = A.agent_id
WHERE A.last_name = 'Smith'
    AND A.first_name = 'Michael';
于 2013-06-20T19:55:04.170 回答
0

你也可以在没有加入的情况下做到这一点。

select * 
from customers 
where customers.agent_id in (
    select agents.agent_id 
    from agents 
    where agents.first_name = 'Michael' and agents.last_name = 'Smith'
);
于 2013-06-20T20:00:59.467 回答