給定兩個表:(傳入大大降低/簡化的示例呈現的關鍵問題)使用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