2013-05-31 25 views
0

我有兩個表,我想匹配 的目標是找到它的廣告可以用於以代理基於性別:MySQL的比賽了採用兩列不同的價值呈現兩個表

table 'agents' has (gender, name,agent_id). 
table 'ads' has (ad_id,gender_id, ad_name). 

極品創建具有(ad_id,viewer_id)的匹配表/視圖/選擇。

viewer.gender could be 'FEMALE' or 'MALE' 
ads.gender_ID could be '1' stands for both , '2' stands for FEMALE and '3' stands for 'MALE' 

我能做到這一點對應用的水平,但我最終希望有一個查詢,以便我可以創建視圖/表每天更新。 謝謝你們。

+0

什麼是Viewer_Id列?缺少表格? – sgeddes

回答

1
select ad_id, agent_id 
from agents 
join ads on gender_id = 1 or gender_id = (if (gender = 'FEMALE', 2, 3)) 
+0

謝謝你,完美的作品! – Talobin

0

您可以通過連接完成此操作。這種關係僅僅比典型的連接複雜一點:

select ad.ad_id, ag.agent_id as viewer_id 
from ads ad join 
    agents ag 
    on (ad.gender_id in (1, 2) and ag.gender = 'FEMALE') or 
     (ad.gender_id in (1, 3) and ag.gender = 'MALE') 

這對大型表格來說效率不高。如果這是一個問題,那麼將這些性別標準化爲兩個表中的一致性。

+0

謝謝,這也適用! – Talobin

0

這是「中途標準化」。改變表格「代理人」,添加一個字段「gender_id」,在... set gender_id = 1 where gender = 'FEMALE* ...這樣的表格上進行更新,放下字段「gender」並感到高興。