2011-11-26 144 views
2

我有以下兩個表條件字段連接查詢結果

1. publisher_site_regionwise_adratio 
publisher_id | site | region | ad_ratio | product_code 
========================================================= 
001   | xyz.com | US  | 8:2  | TB 

2. publisher_site_regionwise_info 
publisher_id | site | region | regional_keywords 
======================================================= 
001   | xyz.com | US  | business, warehouse 

現在第二個表具有不PRODUCT_CODE明智的數據。網站的區域信息與具有特定區域特定網站的發佈商的產品代碼無關。現在我想查詢,這將使我以下字段

site | region | ad_ratio | has_regional_info 
============================================ 
xyz.com | US  | 8:2  | 1 

has_regional_info列將有0或1,這取決於在特定區域內的網站是否已經regional_keywords映射與否。

我不可能想象如何使用JOIN並得到這樣的結果。任何幫助將非常感激。

+0

可以在發佈者(001)有一個以上的網站(xyz.com)嗎?如果是這樣,下面的答案也需要加入(publisher_site_regionwise_adratio.site = publisher_site_regionwise_info.site)。 – halfer

+0

@halfer沿着這些線,該地區是重複的,也可能會改變,並需要在您的加入「開」。沒有太多影響我的答案,剛纔提到你可能需要在'ON'子句中增加額外的列。 –

+0

@AdamWenger - 好點,是的。 – halfer

回答

1

我會採取一個簡單連接到您的信息表,然後檢查是否有數據在regional_keywords列,以確定您的1或0 has_regional_info

SELECT ar.site, ar.region, ar.ad_ratio 
    , CASE 
     WHEN i.regional_keywords IS NOT NULL THEN 1 
     ELSE 0 
    END AS has_regional_info 
FROM publisher_site_regionwise_adratio AS ar 
LEFT JOIN publisher_site_regionwise_info AS i ON ar.publisherId = i.publisherId 

如果publisher_site_regionwise_adratio之間的外鍵publisher_site_regionwise_info不僅僅是publisherId(在您的示例中很難說有3個重複列),那麼只需將這些添加到ON聲明中即可:AND ar.otherColumn = i.otherColumn

0
SELECT ratio.site, ratio.region, ratio.ad_ration, 
    IF(info.has_regional_info IS NULL, true, false) 
FROM publisher_site_regionwise_adratio AS ratio 
LEFT JOIN publisher_site_regionwise_info AS info 
    ON ratio.publisher_id = info.publisher_id 
0
select publisher_site_regionwise_adratio.site, 
     publisher_site_regionwise_adratio.region, 
     publisher_site_regionwise_adratio.ad_ratio, 
     LENGTH(regional_keywords)>0 as has_regional_info 
      from publisher_site_regionwise_adratio 
      join publisher_site_regionwise_info.publisher_id 
       on publisher_site_regionwise_adratio.publisher_id 
       = publisher_site_regionwise_info.publisher_id 
0

這應該這樣做:

SELECT a.publisher_id, a.site, a.ad_ratio, 
    i.regional_keywords IS NOT NULL AS has_regional_keywords 
FROM publisher_site_regionwise_adratio a, publisher_site_regionwise_info i 
WHERE a.publisher_id = i.publisher_id;