3

我有两个包含以下列的表:

表格1:

id, agent_name, ticket_id, category, date_logged

表2:

id, agent_name, department, admin_status

我想要实现的是从 table1 中选择代理部门等于 table2 的所有行。

我尝试了一些不同的连接语句,但要么语法错误,要么无法与此表设置一起使用。我是 MySQL 的初学者,从我读过的内容来看,JOIN 是最复杂的!

我考虑过的另一个选择是将“部门”列复制到 table1 中,但这需要在前端进行更多的编码,我试图看看是否可以在不这样做的情况下达到预期的结果。

非常感谢任何帮助。

4

3 回答 3

4

我不太明白你的问题......只有table2有一个部门,他们唯一的共同点是agent_name。

我确实怀疑您的真正意思是:您想要 Table1 中代理来自某个部门的所有行,这就是您想要的吗?在这种情况下,应该这样做(虽然还没有测试过):

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_name = Table2.agent_name 
      WHERE Table2.department = 'somespecific value';

顺便说一句:(受其他人所说的启发)agent_name听起来它是一个字符串值,您真的应该考虑使用 table2 中的 id 作为 table1 中的键(我们agent_id也许称之为)将它们链接在一起。外键(表之间的链接)应该是真正的唯一 id。该部门也应该是一个 id 键。那么它将是:

SELECT * FROM Table1 
      INNER JOIN Table2 
      ON Table1.agent_id = Table2.id 
      WHERE Table2.department = 'somespecific value';
于 2008-12-04T11:16:49.700 回答
0

虽然我不能完全理解,你需要什么以及表格是如何相关的,但我会尝试类似的东西:

select 
    a.id, a.agent_name, a.ticket_id, 
    a.category, a.date_logged, b.department
from 
    table1 a inner join table2 b on b.agent_name=a.agent_name

目前我假设您需要在 agent_name 上链接表。

顺便说一句,连接是 SQL 范围内最简单的一端 :)

于 2008-12-04T11:09:06.707 回答
0

您可能希望在两个表之间添加一个唯一的关系键,而不是在两个表中都使用代理名称。像这样的东西:

Table1: id, agent_id,  ticket_id, category, date_logged
Table2: agent_id, agent_name, department, admin_status

一个 SQL 示例:

SELECT t2.agent_name, t1.date_logged FROM table1 t1
INNER JOIN table2 t2 ON t2.agent_id = t1.agent_id

但是,您可能想使用某种外部联接,因此我建议您查看 Internet 上的一些文章。

于 2008-12-04T11:13:46.853 回答