Создание табличного представления в Oracle Apex

«Отсутствует выражение» для выбора отдельного запроса знак ошибки

CREATE OR REPLACE FORCE EDITIONABLE VIEW "KIR_V_KAS_MASUK_KET" ("...") as
    SELECT
KMH.KODE_KAS,
KA.NIS,
KA.NAMA,
KA.KELAS,
KA.JURUSAN,
        SELECT DISTINCT
        (SELECT PERIODE FROM KIR_KAS_MASUK_HEAD WHERE KODE_KAS=:P16_KODE_KAS) PERIODE,
        TO_CHAR((SELECT SUM(PEMBAYARAN)  FROM KIR_KAS_MASUK_DETAIL WHERE KODE_KAS = :P16_KODE_KAS), '999,999,999') TOTAL_PEMBAYARAN,
         TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999,999,999') TOTAL_WAJIB_BAYAR,
KMD.KETERANGAN
FROM
KIR_ANGGOTA KA,
KIR_KAS_MASUK_HEAD KMH,
KIR_KAS_MASUK_DETAIL KMD
WHERE
KMD.KODE_KAS=KMH.KODE_KAS
AND
KMD.NIS=KA.NIS
/

я хотел создать таблицу просмотра с 9 столбцами, в которых 3 из этих столбцов являются чем-то, что я считаю проблемой, потому что выберите отдельный в запросе на выборку, что неверно, но я действительно не знаю решения, потому что я просто добавляю эти «выбрать отдельный запрос, не зная ничего, что делает его неправильным. Я надеюсь, что кто-то исправит меня, чтобы я мог сделать результат, который я хотел создать, используя запрос таблицы просмотра в моем приложении.

Пожалуйста, не публикуйте скриншоты. Любой, кто пытается вам помочь, должен перепечатать все заново. Публикуйте открытым текстом.

Koen Lostrie 18.11.2022 11:52

мне очень жаль, что я не знаю об этом, я исправлю это прямо сейчас

NYAPPP 18.11.2022 14:45
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что очевидно, так это то, что синтаксис неверен. Должно быть примерно так (упрощенно):

create view ... as
select DISTINCT kmh.kode_kas, ...              --> DISTINCT goes here
  (select periode from ... ) periode,
  (select to_char(sum(pembayaran, '999,999,999)) from ...) total_pembayaran
from kir_anggota ka, ...
where ...

Обратите внимание, что все подзапросы (для periode, total_pembayaran, ...) должны возвращать одно значение. Их пункт where должен обеспечивать это.

ibb.co/rbJyMv8 (Ошибка в строке 10/45: ORA-01027: связывание переменных не разрешено для операций определения данных) CREATE VIEW "KIR_V_KAS_MASUK_KET" (...) as SELECT DISTINCT KMH.KODE_KAS, KA.NIS, Ka.nama, ka.kelas, ka.jurusan, (выберите Periode из kir_kas_masuk_head, где kode_kas =: p16_kode_kas) periode, to_char ((выберите sum (pembayaran) от kir_kas_masud_detail, где kode_kas =: p16_kode), 99,1,1,1,1,19,19, WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999 999 999') TOTAL_WAJIB_BAYAR, KMD.KETERANGAN
NYAPPP 18.11.2022 14:48

ОШИБКА в строке 10/45 -> TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999 999 999') TOTAL_WAJIB_BAYAR,

NYAPPP 18.11.2022 14:53
Ответ принят как подходящий

Есть несколько вопросов:

  • В части select оператора select каждый выбранный вами столбец должен возвращать скалярное значение. Невозможно выбрать 3 столбца с помощью одного оператора выбора

  • Невозможно ссылаться на переменные связывания (элемент страницы P16_KODE_KAS) в объекте базы данных. Это не компилируется, потому что во время компиляции значения элементов вершины не могут быть известны. Обходной путь — использовать функцию v().

  • Используйте соединения ansi вместо старого синтаксиса оракула. Читать легче, а ошибиться сложнее.

Вот "исправленная" версия. Все еще могут быть ошибки, поскольку у меня нет доступа к вашей среде, определениям таблиц и примерам данных.

CREATE OR REPLACE FORCE EDITIONABLE VIEW "KIR_V_KAS_MASUK_KET" ("...") as
    SELECT
KMH.KODE_KAS,
KA.NIS,
KA.NAMA,
KA.KELAS,
KA.JURUSAN,
(SELECT DISTINCT PERIODE FROM KIR_KAS_MASUK_HEAD WHERE KODE_KAS=v('P16_KODE_KAS')) PERIODE,
(SELECT DISTINCT TO_CHAR((SELECT SUM(PEMBAYARAN)  FROM KIR_KAS_MASUK_DETAIL WHERE KODE_KAS = v('P16_KODE_KAS')), '999,999,999') TOTAL_PEMBAYARAN,
(SELECT DISTINCT TO_CHAR(WAJIB_BAYAR * (SELECT COUNT(*) FROM KIR_ANGGOTA WHERE STATUS != 'TIDAK AKTIF'), '999,999,999') TOTAL_WAJIB_BAYAR,
KMD.KETERANGAN
FROM
KIR_ANGGOTA KA
  JOIN KIR_KAS_MASUK_DETAIL KDM ON KMD.NIS=KA.NIS
  JOIN KIR_KAS_MASUK_HEAD KMH ON KMD.KODE_KAS=KMH.KODE_KAS
/

При этом похоже, что это будет использоваться только на одной странице. Я бы не стал создавать представление в этом случае. Это похоже на перебор.

извините, он говорит это, но не говорит мне, какая это строка ORA-00921: неожиданный конец команды SQL

NYAPPP 18.11.2022 15:27

Я сказал это: «Все еще могут быть ошибки, поскольку у меня нет доступа к вашей среде, определениям таблиц и примерам данных». Удаляйте построчно и пробуйте, пока не заработает. Затем добавьте строки обратно, чтобы увидеть, где ошибка. Исправить ошибку. Базовая отладка

Koen Lostrie 18.11.2022 17:24

Другие вопросы по теме