给定两个表:(传入大大降低/简化的示例呈现的关键问题)使用dbix-class加入子查询?
app_data文件表示可以订阅
id app_name
1 apple
2 berry
3 cherry
app_sub地图电子邮件地址应用
应用id email
1 alex
2 bob
2 coby
我想从单用户的观点生成一个表,显示哪一个当前用户订阅的应用而不是。
例如,从亚历克斯的角度来看,我想获得:
desired_table
id app_name is_subscribed
1 apple true
2 berry false
3 cherry false
以下纯SQL查询似乎是罚款:
select id, app_name, email
from app_data left join (select *
from app_sub
where email='alex'
) as subquery
on app_name.id=app_data.id;
不过我很难让它在dbix-class中工作。
可替换地,我试图消除像这样的子查询:在以下
$app_data_resultset->search({ -or => [ { email => 'alex' },
{ email => undef },
],
},
{ select => [ qw{ me.id
me.app_name
app_sub.email
},
],
as => [ qw{ id
app_name
email
},
],
join => 'app_sub',
);
然而,该(现预期地)的结果(处理0和null作为假后):
bad_table
id app_name is_subscribed
1 apple true
3 cherry false
由于 '鲍勃' 和 'COBY' 订阅ID 2,where子句完全消除了开环nd id。
任何帮助将不胜感激!
谢谢!我最终通过一个自定义的ResultSource来使用任意SQL。构建一个干净而有效的ResultSource :: View花费了不小的努力,但它绝对奏效! – vlee