この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
よろしくお願いします
この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
よろしくお願いします
アクティブレコードのドキュメントを使用してこれを自分で理解できない理由はわかりませんが、次のようになります。
$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までは、アクティブレコードクラスを拡張して追加せずにアクティブレコードでサブクエリを実行する唯一の方法です。