1

このSQLクエリをcodeigniterクエリに変換しようとしています

SELECT 
  uploads.EMAIL
FROM
  uploads 
  JOIN (

    SELECT EMAIL, COUNT(*) as num FROM uploads GROUP BY EMAIL
  ) c ON uploads.EMAIL = c.EMAIL
ORDER BY 
  c.num DESC, 
  EMAIL ASC

よろしくお願いします

4

1 に答える 1

1

アクティブレコードのドキュメントを使用してこれを自分で理解できない理由はわかりませんが、次のようになります。

$this->db->select('uploads.EMAIL');
$this->db->from('uploads');
$this->db->join('(SELECT EMAIL, COUNT(*) as num FROM uploads GROUP BY EMAIL) c','uploads.EMAIL = c.EMAIL','',FALSE);
$this->db->order_by('c.num desc, uploads.EMAIL asc');

その後

$query = $this->db->get();

参考までに、メソッドに4番目のパラメーターとしてFALSEを渡すとdb->join()、ステートメントがエスケープされないため、外部変数を取得する場合は注意が必要です。これは、CodeIgniter 3までは、アクティブレコードクラスを拡張して追加せずにアクティブレコードでサブクエリを実行する唯一の方法です。

于 2012-09-07T17:31:24.570 に答える