我有两张桌子想要搭配 目标是根据性别找出哪个广告可用于哪个代理:
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 :(得分:1)
select ad_id, agent_id
from agents
join ads on gender_id = 1 or gender_id = (if (gender = 'FEMALE', 2, 3))
答案 1 :(得分: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')
这对大桌子来说效率不高。如果这是一个问题,那么将性别标准化为在两个表中它们是一致的。
答案 2 :(得分:0)
这是“中途正常化”。更改表“代理商”,添加字段“gender_id”,在表格上进行更新,如... set gender_id = 1 where gender = 'FEMALE* ...
,删除字段“性别”,并感到高兴。