MySQL Query使用另一个表中的引用参数

时间:2013-06-20 19:52:05

标签: mysql

如果这看起来很简单,我会提前道歉,因为我的作业需要在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,如果我知道代理名称基于id,我可以直接调用它: SELECT * FROM customers WHERE agent_id = '4'

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

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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'
);