0

我觉得这是我可以搜索的东西,但我不知道正确的术语。

我有一个有几个表的 SQL 数据库。一张表存储软件电话的呼叫者日志 (agent_log),一张表存储软件电话上的人正在呼叫的活动信息 (活动)。两个表都有我可以用来互相调用的列“campaign_id”(我认为)。我需要关联这两个表,以便我可以有一个看起来像的 sql 查询

SELECT * FROM agent_log WHERE active = 'Y';

显然它不起作用,因为该表中不存在“活动”列,它存在于活动表中。有什么简单的方法可以解决这个问题吗?

4

5 回答 5

3

您正在尝试做的事情称为 aJOIN您将JOIN使用它们之间共有的字段来使用表,因此对于您的表来说,它将是campaign_id.

SELECT *
FROM agent_log al
INNER JOIN campaigns c
    ON al.campaign_id = c.campaign_id
WHERE c.active = 'Y'

或者

SELECT *
FROM agent_log al
INNER JOIN campaigns c
    ON al.campaign_id = c.campaign_id
    AND c.active = 'Y'

我建议您阅读有关JOINs 的内容。 连接的视觉解释是一个很好的开始。

于 2012-08-06T21:23:37.910 回答
1
SELECT * 
FROM agent_log 
INNER JOIN campaigns ON agent_log.campaign_id = campaigns.campaign_id 
WHERE campaigns.active = 'Y';
于 2012-08-06T21:23:39.390 回答
1

idcampaign_id 存在于两个表中,并假设表之间存在关系,您可以加入它们:

SELECT agent_log.campaign_id
FROM agent_log, campaigns
WHERE agent_log.campaign_id = campaigns.campaign_id 
      AND campaigns.active = 'Y'

如果您喜欢使用 JOIN,我建议您花一些时间来学习它。

于 2012-08-06T21:31:02.213 回答
0

您只需要像这样使用 JOIN 查询

SELECT al.*
FROM agent_log as al
INNER JOIN campaigns as c
ON al.campaign_id = c.campaign_id
WHERE c.active = 'Y';

您需要确保已在两个表上的campaign_id 字段和活动表中的活动字段上建立索引,以使查询高效运行。

于 2012-08-06T21:24:59.903 回答
0

这应该在没有内部连接的情况下工作

SELECT 
    agent_log.campaign_id 
FROM 
    agent_log,
    campaigns 
WHERE 
    agent_log.campaign_id = campaigns.campaign_id
AND
    campaigns.active = 'Y';
于 2012-08-06T21:26:28.710 回答