0

これは検索できるような気がしますが、正しい用語がわかりません。

いくつかのテーブルを持つ SQL データベースがあります。1 つのテーブルには、ソフトフォンの発信者ログ (agent_log) が格納され、もう 1 つのテーブルには、ソフトフォンの人々が何に電話をかけているか (キャンペーン) に関するキャンペーン情報が格納されます。両方のテーブルには、相互に呼び出すために使用できる列「campaign_id」があります (と思います)。次のようなSQLクエリを作成できるように、これら2つのテーブルを関連付ける必要があります

SELECT * FROM agent_log WHERE active = 'Y';

「アクティブ」列がそのテーブルに存在せず、キャンペーン テーブルに存在するため、明らかに機能しません。これについて簡単な方法はありますか?

4

5 に答える 5

3

あなたがやろうとしているJOINことは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'

sについて読んでみることをお勧めしますJOIN結合の視覚的な説明は素晴らしいスタートです。

于 2012-08-06T21:23:37.910 に答える
1

id Campaign_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 に答える
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 に答える
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 に答える
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 に答える