如果这看起来很简单,我会提前道歉,因为我的作业需要在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'
但是如何通过提交代理名字和姓氏作为参数来查询呢? (名字和姓氏,因为代理可以具有相同的名称,甚至姓氏相同)
答案 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'
);