2016-10-17 1 views
0

나는 zend를 사용하고 있지만 질문에 대한 대답은 mysql에 주어질 수있다. 조인 쿼리 후 "FIRST"테이블의 열을 결과의 마지막 열로 이동하는 방법?

protected function _getView() { 
    $gatewayTable = new Emailer_Model_DbTable_Gateway(); 
    $select = $this->_getDb()->select() 
     ->from(
      array(
       'gatewayTable' => $gatewayTable->getTableName() 
      ), 
      array(
       'id', 
       'name', 
       'requireAuth', 
       'smtphost', 
       'smtpPort', 
       'sendLimit', 
       'inError', 
       'lastError', 
       'errorCount' 
      ) 
     ); 
    return $select; 
} 



$authTable = new Emailer_Model_DbTable_Auth(); 
    $select = $this->_getView(); 
    $select 
     ->join(
      array(
       'authTable' => $authTable->getTableName() 
      ), 
      'gatewayTable.id = authTable.idEmailerGateway', 
      array(
       "authId" => "id", 
       'username', 
       'fromAddress', 
       'fromName', 
       "password" => "encryptedPwd", 
       'sentCount', 
       'lastUsed' 
      ) 
     ); 

나는이 결과 $select에 가져 오기 실행

, 나는 첫 번째 테이블의 errorCount 열이 $res의 마지막에 가고 싶어요.

$res = $this->_getDb()->query($select)->fetch(); 

답변

1

결과에서 열의 순서를 변경 하시겠습니까?

SQL에서는 필요한 순서로 열을 선택하기 만하면됩니다. 마찬가지로

SELECT t1.x, t1.y, t2.a, t2.b, t1.z 
FROM t1 
JOIN t2 

columns() 메서드가 있습니다.

https://framework.zend.com/manual/1.10/en/zend.db.select.html

단락 의 기존 또는 가입 테이블에 열을 추가

이러한 메소드가 호출 된 후에 당신은의 기존 또는 가입 테이블에 열을 추가 할 경우가있을 수 있습니다를 . columns() 메서드를 사용하면 쿼리를 실행하기 전에 특정 시점에 특정 열을 추가 할 수 있습니다. 문자열을 Zend_Db_Expr 또는 이러한 요소의 배열로 제공 할 수 있습니다. 이 메소드의 두 x 째 인수는 생략 될 수 있으며, 이는 C 럼이 FROM 테이블에 추가된다는 것을의 L합니다. 그렇지 않으면 기존 상관 이름을 사용해야합니다. 열() 방법으로 열을 추가 예 중 #

11 예

// Build this query: 
// SELECT p."product_id", p."product_name" 
// FROM "products" AS p 

$select = $db->select() 
      ->from(array('p' => 'products'), 'product_id') 
      ->columns('product_name'); 

// Build the same query, specifying correlation names: 
// SELECT p."product_id", p."product_name" 
// FROM "products" AS p 

$select = $db->select() 
      ->from(array('p' => 'products'), 'p.product_id') 
      ->columns('product_name', 'p'); 
      // Alternatively use columns('p.product_name') 
+0

감사 필립은 I는 첫 번째 테이블에서 'errorCount' 열을 제거하고,'은 USING 조인 후 추가 –

+0

@Phillip : 그저, 나는 내 _getView()를 변경하고 싶지 않습니다. 즉, "시작 부분에 errorCount를 선택하지 마십시오"라는 것을 원하지 않습니다. 필요하다면 어디에서 추가 할 것인가? removeColumn()과 같은 것이 있나요? –

관련 문제