0

このように、クエリからビューを作成しようとしています:

CREATE VIEW v_test
(
OS_ID,
OS_IMIE,
KO_SYMBOL,
OS_NAZWISKO,
OS_SYGNATURA_APS,
UP_DATA_WAZNOSCI_SZKOLENIA,
UP_WAZNOSC_SZKOLENIA_DNI,
UP_DATA_SZKOLENIA,
KT_ID,
KT_DZIEDZINA
)
AS
SELECT
a.OS_ID,
a.OS_IMIE,
a.KO_SYMBOL,
a.OS_NAZWISKO,
a.OS_SYGNATURA_APS,
b.UP_DATA_WAZNOSCI_SZKOLENIA,
b.UP_WAZNOSC_SZKOLENIA_DNI,
b.UP_DATA_SZKOLENIA,
b.KT_ID,
b.KT_DZIEDZINA

FROM (SELECT
      v_ra_osoby_uprawnione.OS_ID,
      v_ra_osoby_uprawnione.KO_SYMBOL,
      v_ra_osoby_uprawnione.OS_NAZWISKO,
      v_ra_osoby_uprawnione.OS_IMIE,
      v_ra_osoby_uprawnione.OS_SYGNATURA_APS,
      v_ra_osoby_uprawnione.OS_EMAIL,
      v_ra_osoby_uprawnione.OS_UZYTKOWNIK
      FROM v_ra_osoby_uprawnione AS v_ra_osoby_uprawnione) AS a INNER JOIN (SELECT
      v_ra_uprawnienia.UP_ID,
      v_ra_uprawnienia.OS_ID,
      v_ra_uprawnienia.UP_NR_POSWIADCZENIA,
      v_ra_uprawnienia.UP_DATA_WAZNOSCI_KLAUZULI,
      v_ra_uprawnienia.UP_DATA_WYDANIA_POSWIADCZENIA,
      v_ra_uprawnienia.UP_NR_ZASWIADCZENIA_O_SZKOLENIU,
      v_ra_uprawnienia.UP_DATA_SZKOLENIA,
      v_ra_uprawnienia.UP_DATA_WAZNOSCI_SZKOLENIA,
      v_ra_uprawnienia.UP_DATA_WAZNOSCI_SZKOLENIA - CURDATE() as UP_WAZNOSC_SZKOLENIA_DNI,
      v_ra_uprawnienia.KT_ETYKIETA,
      v_ra_uprawnienia.KT_DZIEDZINA,
      v_ra_uprawnienia.KT_ID,
      v_ra_uprawnienia.SCISLE_TAJNE,
      v_ra_uprawnienia.TAJNE,
      v_ra_uprawnienia.POUFNE,
      v_ra_uprawnienia.ZASTRZEZONE
      FROM v_ra_uprawnienia AS v_ra_uprawnienia) AS b ON b.OS_ID = a.OS_ID

しかし、mysql はビューの作成を許可していません。エラー コードは次のとおりです: SQL エラー: ビューの SELECT には、FROM 句にサブクエリが含まれています

サブクエリごとにビューを作成することを避けたい。この場合、クエリをサブクエリなしで同等のものに書き換えることで、単一のビューを作成することは可能ですか?

4

2 に答える 2

1

この場合、クエリをサブクエリなしで同等のものに書き換えることで、単一のビューを作成することは可能ですか?

はい:

CREATE VIEW v_test AS
SELECT a.OS_ID,
       a.OS_IMIE,
       a.KO_SYMBOL,
       a.OS_NAZWISKO,
       a.OS_SYGNATURA_APS,
       b.UP_DATA_WAZNOSCI_SZKOLENIA,
       b.UP_DATA_WAZNOSCI_SZKOLENIA - CURDATE() AS UP_WAZNOSC_SZKOLENIA_DNI,
       b.UP_DATA_SZKOLENIA,
       b.KT_ID,
       b.KT_DZIEDZINA
FROM   v_ra_osoby_uprawnione a JOIN v_ra_uprawnienia b USING (OS_ID)
于 2012-09-13T12:21:03.970 に答える
1

サブクエリを使用する理由

クエリは結合のみで同様に機能します

SELECT
    a.OS_ID,
    a.OS_IMIE,
    a.KO_SYMBOL,
    a.OS_NAZWISKO,
    a.OS_SYGNATURA_APS,
    b.UP_DATA_WAZNOSCI_SZKOLENIA,
    b.UP_WAZNOSC_SZKOLENIA_DNI - CURDATE() as UP_WAZNOSC_SZKOLENIA_DNI
    b.UP_DATA_SZKOLENIA,
    b.KT_ID,
    b.KT_DZIEDZINA

    FROM v_ra_osoby_uprawnione AS a 
    INNER JOIN v_ra_uprawnienia AS b ON b.OS_ID = a.OS_ID

これでビューを作成してみてください

于 2012-09-13T12:23:33.123 に答える