Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Zend \ Db:Chọn từ truy vấn con

CHỈNH SỬA :Trên thực tế, bây giờ tôi thấy rằng truy vấn của tôi có sai sót. Nó sẽ không hoạt động như mong đợi với MySQL, có nghĩa là tôi vẫn phải viết các truy vấn chuyên biệt. Xem GROUP_CONCAT thay đổi GROUP THEO thứ tự

Sau khi xem qua mã của Zend\Db\Sql\Select Tôi tìm thấy những dòng này:

if ($table instanceof Select) {
    $table = '(' . $this->processSubselect($table, $platform, $driver, $parameterContainer) . ')';
} else {
    $table = $platform->quoteIdentifier($table);
}

Vì vậy, câu trả lời thực sự khá đơn giản, tất cả những gì tôi phải làm là cung cấp Zend\Db\Sql\Select đối tượng với from() mà không cần gói nó trong một Zend\Db\Sql\Expression như tôi đã từng làm với ZF1.

Ví dụ về mã:

$adapter = $this->getAdapter(); // Returns Zend\Db\Adapter\Adapter
$sql = new Zend\Db\Sql\Sql($adapter);

$from = $sql->select()
    ->from(static::$table)
    ->columns(array(
        'full_name',
        'value',
    ))
    ->order('id DESC');

$select = $sql->select()
    ->from(array(
        'subtable' => $from,
    ))
    ->columns(array(
        'full_name' => 'full_name',
        'value' => new Expression('GROUP_CONCAT(value)'),
    ))
    ->group('full_name')
    ->order('full_name DESC');

$selectString = $sql->getSqlStringForSqlObject($select);

$resultSet = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE);

return $resultSet->toArray();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giá trị mặc định của MySQL làm giá trị của trường khác

  2. Phân tích cú pháp một tệp xml và lưu trữ nó vào cơ sở dữ liệu

  3. so sánh ngày cơ bản để kiểm tra ngày hết hạn

  4. làm thế nào để sử dụng Dữ liệu JSON trong chart.js?

  5. Nguồn lực # là gì?