Как преобразовать запрос с объединением и подзапросом в активную запись - PullRequest
0 голосов
/ 24 октября 2019

Я хочу преобразовать свой запрос, имеющий подзапрос и объединение, в активный построитель запросов записей в CI и использовать его для отображения данных с помощью ajax

Я пытался использовать db-> query -> ("")но это не может быть вызвано в другой функции, чтобы ограничить результат, я также попробовал это '' 'Я попытался использовать это, например

 $this->db
        ->select("row_number() over (order by id_monograf) nomer, id_monograf, string_agg(id_keywords::varchar,'-') keywords")
        ->from('bibliography.cb_keywords_monograf')
        ->group_by('id_monograf');
        $subquery1 = $this->db->get_compiled_select();
$this->db->select("gab.* FROM (")
                ->select("a.judul,b.keywords, a.jenis as tipe,'Monografi' as jenis, a.tgl_buat, a.status_cantuman, a.dibuat_oleh")
                ->from('bibliography.cb_monograf a')
                ->join("($subquery1) b","a.id_monograf = b.id_monograf) gab","inner");

, но пришло сообщение об ошибке, подобное этому

SELECT gab.* FROM (, "a"."judul", "b"."keywords", "a"."jenis" as "tipe", 'Monografi' as jenis, "a"."tgl_buat", "a"."status_cantuman", "a"."dibuat_oleh" FROM "bibliography"."cb_monograf" "a" INNER JOIN (SELECT row_number() over (order by id_monograf) nomer, "id_monograf", string_agg(id_keywords::varchar, '-') keywords FROM "bibliography"."cb_keywords_monograf" GROUP BY "id_monograf") b ON "a"."id_monograf" = b.id_monograf) gab WHERE "gab"."dibuat_oleh" = 'ryanakbar' 

ЭТО ВЕСЬ ЗАПРОС

SELECT gab.* FROM
(SELECT "a".judul,
       "b"."keywords",
             "a"."jenis" as tipe,
             'Monografi' as jenis,
             "a"."tgl_buat",
             "a"."status_cantuman",
             "a"."dibuat_oleh"
FROM "bibliography"."cb_monograf" "a"
INNER JOIN
  (SELECT row_number() OVER (
     ORDER BY id_monograf) nomer,
     "id_monograf",
     string_agg(keywords_name::varchar, '-') keywords
   FROM "bibliography"."cb_keywords_monograf" "km"
     INNER JOIN "bibliography"."cb_keywords" "k" ON "k"."id_keywords" = "km"."id_keywords"
   GROUP BY "id_monograf") b ON "a"."id_monograf" = "b"."id_monograf"
UNION
SELECT "a".judul,
       "b"."keywords",
             '-' as tipe,
             'Artikel' as jenis,
             "a"."tgl_buat",
             "a"."status_cantuman",
             "a"."dibuat_oleh"
FROM "bibliography"."cb_artikel" "a"
INNER JOIN
  (SELECT row_number() OVER (
     ORDER BY id_artikel) nomer,
     "id_artikel",
     string_agg(keywords_name::varchar, '-') keywords
   FROM "bibliography"."cb_keywords_artikel" "ka"
     INNER JOIN "bibliography"."cb_keywords" "k" ON "k"."id_keywords" = "ka"."id_keywords"
   GROUP BY "id_artikel") b ON "a"."id_artikel" = "b"."id_artikel"
UNION
SELECT "a"."judul",
       "a"."url_title" as keywords,
             '-' as tipe,
             'Terbitan Berkala' as jenis,
             "a"."tgl_buat",
             "a"."status_cantuman",
             "a"."dibuat_oleh"
FROM "bibliography"."cb_terbitan_berkala" "a"
) gab
WHERE "gab"."dibuat_oleh" = 'ryanakbar'
ORDER BY "gab"."tgl_buat" DESC
LIMIT 5;
...