0

Zend DB を使用します。DB クラスを使用してこのクエリを作成する方法を理解しようとしています。

select 
   org.orgid
   org.role
   user.userid
   user.firstname
from orgTable org
join userTable user on org.userid = user.userid
where org.orgid = 'generated-id'

私が理解している、またはASのような条件を使用して1つの定義でそれを行う方法を理解していると思うドキュメントから、それでもまだわかりません。最終的に、これはクロステーブルの条件に基づいて複数テーブルの結合に分岐するため、最初にこれを達成する方法がわかりません。

4

3 に答える 3

2

これがあなたが探しているものだと思います

$db = Zend_Db::factory( ...options... );

$select = $db->select()
             ->from(array('org' => 'orgTable'),
                    array( 
                        'orgid' => 'org.orgid', 
                        'role'  =>'org.role',
                        'userid'  =>'user.userid',
                        'firstname' =>'user.firstname'
                    ))
             ->join(array('user' => 'userTable'),
                    'org.userid = user.userid',array())
            ->where('org.orgid = ?',$generated_id);
于 2012-10-08T22:02:58.210 に答える
0

Zend Framework 2では、次のコードは、探しているものを支援します

$generated_id = 1 ;

$select = new \Zend\Db\Sql\Select( array('org' =>'orgTable'));

$select->columns(array('orgid','role') )
       ->join( array('user' => 'userTable'),  
               'org.userid = user.userid', 
               array('userid','firstname')
       )->where( array('org.orgid' => $generated_id ) );

アダプタ プラットフォームが mysql の場合、sql を出力するため

$mysqlPlatform = new \Zend\Db\Adapter\Platform\Mysql();
echo $select->getSqlString(  $mysqlPlatform );

SQLを次のように出力します

SELECT 
     `org`.`orgid` AS `orgid`, 
     `org`.`role` AS `role`, 
     `user`.`userid` AS `userid`, 
     `user`.`firstname` AS `firstname` 
FROM 
     `orgTable` AS `org` 
         INNER JOIN `userTable` AS `user` 
         ON `org`.`userid` = `user`.`userid` 
WHERE 
     `org`.`orgid` = '1'
于 2012-10-09T06:37:09.187 に答える
0

Zend_Db_Selectこれは、探している結果を返すaです。

    $select = $db->select()
                 ->from(array('org' => 'orgTable'), array('orgid', 'role'))
                 ->join(array('user' => 'userTable'), 'org.userid = user.userid', array('userid', 'firstname'))
                 ->where('org.orgid = ?', 'generated-id');

テーブル名の配列表記を使用して、クエリでエイリアス名を取得できます。

それが役立つことを願っています。

于 2012-10-08T22:07:31.947 に答える