2016-01-06 35 views
-2

任何人都可以在yii2中構造這個子查詢嗎?yii2中的複雜子查詢

select name, crt_by, (select name from tbl_employee_master 
         where tbl_employee_master.contact = (select username from tbl_user 
         where tbl_user.id = tbl_dealer_master.crt_by)) as 
         employee, district, contact_person, contact, 
(select count(*) from tbl_dealer_post 
    where tbl_dealer_post.fk_user_id = tbl_dealer_master.id) 
    as post_count from tbl_dealer_master 
    where status=1 

幫助是明顯的! 在此先感謝!

+0

你想用'activerecord'或'activequery'回答嗎? –

+2

檢查了這一點http://stackoverflow.com/questions/30164491/yii2-subquery-in-active-record – Bloodhound

回答

3

這裏是activequery你可以使用..

$query= (new Query())->select([ 
     'name' , 
     'crt_by' , 
     'employee' => (new Query())->select('name') 
      ->from('tbl_employee_master') 
      ->where([ 
       '=','tbl_employee_master.contact', (new Query()) 
        ->select('username') 
        ->from('tbl_user') 
        ->where('tbl_user.id=tbl_dealer_master.crt_by') 
      ]), 
     'district', 
     'contact_person', 
     'contact', 
     'post_count' => (new Query())->select('count(*)') 
      ->from('tbl_dealer_post') 
      ->where('tbl_dealer_post.fk_user_id=tbl_dealer_master.id') 
    ])->from('tbl_dealer_master')->where(['status' => 1]); 
+0

非常感謝您的及時回覆!我想你錯過了父查詢部分的from子句! –

+0

哦,哦...感謝提醒我...我已經更新了..請Upvote如果答案是有效的未來用戶準..... –

-2

這是給定的問題的完整的解決方案!

$query= (new Query())->select([ 
     'name' , 
     'crt_by' , 
     'employee' => (new Query())->select('name') 
      ->from('tbl_employee_master') 
      ->where([ 
       '=','tbl_employee_master.contact', (new Query()) 
        ->select('username') 
        ->from('tbl_user') 
        ->where('tbl_user.id=tbl_dealer_master.crt_by') 
      ]), 
     'district', 
     'contact_person', 
     'contact', 
     'post_count' => (new Query())->select('count(*)') 
      ->from('tbl_dealer_post') 
      ->where('tbl_dealer_post.fk_user_id=tbl_dealer_master.id') 
    ])->from('tbl_dealer_master')->where(['status' => 1]); 
+0

你應該接受雙H – Bloodhound