2012-09-13 2 views
0

내 쿼리에서보기를 만들려고 해요, 이런 식으로 만들 수 있습니다 :mysql을 don'a이보기

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 오류 : FROM 절의 하위 쿼리에보기의 SELECT가 포함되어 있습니다.

각 하위 쿼리에 대한보기를 만들고 싶습니다. 이 경우 subqueries 없이도 내 쿼리를 다시 작성하여 단일 뷰를 만들 수 있습니까?

답변

1

Is tihs possible to create single view in this case by rewriting my query to equivalent without subqueries?

예 :

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) 
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 

시도 가입과 동일하게 작동