2012-05-15 69 views
0

我正在執行這兩個查詢。加入以下查詢?

1.

select widget_uid,param_value as campaign_name 
from widget_config_value 
where widget_uid in (select widget_uid 
        from widget_config_value 
        where param_name="active" 
          and param_value="1" 
          and widget_uid in (select widget_uid 
               from partner_widget 
               where partner_uid=4) 
        ) 
     and param_name="widgetCampaignName"; 

2.

select widget_uid,param_value as campaign_type 
from widget_config_value 
where widget_uid in (select widget_uid 
        from widget_config_value 
        where param_name="active" 
          and param_value="1" 
          and widget_uid in (select widget_uid 
               from partner_widget 
               where partner_uid=4) 
        ) 
     and param_name="widgetType"; 

我怎樣才能將這個上widget_uid?所以,我可以得到常見的widget_uid的結果??

還是有什麼辦法來改善上面的查詢?

+0

這兩個被查詢似乎一致,除了PARAM_NAME一樣嗎?這不能工作「param_name IN('widgetCampaignName','widgetType')」 –

+0

喬恩?如[Jon Skeet] [http://stackoverflow.com/users/22656/jon-skeet]? :P –

+0

@ Jonas-param名稱與widgetcampaignname和widgettype不同 – Vicky

回答

1

,您可以嘗試通過以下方式 -

select widget_uid, campaign_name, campaign_type from 
(select widget_uid,param_value as campaign_name from widget_config_value 
where widget_uid in 
(select widget_uid from widget_config_value 
where param_name="active" 
and param_value="1" 
and widget_uid in (select widget_uid from partner_widget where partner_uid=4)) 
and param_name="widgetCampaignName") tbl1, 
(select widget_uid,param_value as campaign_type 
from widget_config_value 
where widget_uid in 
(select widget_uid 
from widget_config_value 
where param_name="active" 
and param_value="1" 
and widget_uid in (select widget_uid from partner_widget where partner_uid=4)) 
and param_name="widgetType") tbl2 
where tbl1.widget_uid = tbl2.widget_uid; 
+0

它看起來不錯...但仍有一個問題,widget_uid不明確 – Vicky

+1

嗨,請在第一行嘗試'tbl1.widget_uid'。 – jaibatrik

+0

它工作正常......謝謝.... :) – Vicky

0

我想查詢將不能工作,因爲這是不可能的

param_name="active" and param_name="widgetCampaignName" 
的同時

。也查詢不。 2

看看你的查詢

select 
    widget_uid,param_value as campaign_name 
from widget_config_value 
where 
    widget_uid in (
     select widget_uid 
     from 
      widget_config_value 
     where 
      param_name="active" and 
      param_value="1" and 
      widget_uid in (
       select widget_uid 
       from partner_widget 
       where partner_uid=4) 
      ) and 
    param_name="widgetCampaignName"; 

在這部分

select widget_uid 
     from 
      widget_config_value 
     where 
      param_name="active" and 
      param_value="1" and 
      widget_uid in (
       select widget_uid 
       from partner_widget 
       where partner_uid=4) 
      ) 

給你widget_config_value數據是不可能有param_name not equal to "active"。所以param_name="widgetCampaignName"是沒用的。

+0

請仔細閱讀....忘了閱讀括號 – Vicky

+0

只有在widget_config_value表中的'widget_uid'爲UNIQUE時纔是如此。 –

+0

@Vicky。 [Igor] {http://stackoverflow.com/users/883286/igor}是對的。但具有'_uid'的列名讓我知道它是'UNIQUE ID' –