

use dbMatInf;


DROP VIEW IF EXISTS vFunkcjePoz;
CREATE VIEW vFunkcjePoz AS
    select
        x.*,
        x.cOd <= now() and (x.cDO is null or now() <= x.cDO) as cTeraz,
        f.cNazwa
    from tFunkcjePoz as x
        join tFunkcje as f on f.cID = x.cFunkcjaID;

DROP VIEW IF EXISTS vFunkcjePozPracownicy;
CREATE VIEW vFunkcjePozPracownicy AS
    select
        x.*,
        x.cOd <= now() and (x.cDO is null or now() <= x.cDO) as cTeraz,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cGrupa as cPGrupa,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tFunkcjePoz as x
        left join tPracownicy as p on p.cID = x.cPracownikID;


DROP VIEW IF EXISTS `vInSeminaria`;
CREATE VIEW `vInSeminaria` AS
    select
        s.*,
        (select group_concat(if(cUczelnia = '', cReferent, concat_ws(' - ', cReferent, cUczelnia)) separator ', ') from tInSeminariaRef where cSeminarium = s.cID order by cCT) as cReferenci
    from tInSeminaria as s
    order by s.cData desc;

DROP VIEW IF EXISTS `vInSeminariaRef`;
CREATE VIEW `vInSeminariaRef` AS
    select
        r.*,
        p.cUN,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tInSeminariaRef as r
        left join tPracownicy as p on p.cID = r.cPracownikID;


DROP VIEW IF EXISTS `vKomputery`;
CREATE VIEW `vKomputery` AS
    select
        tKomputery.*,
        tInstytuty.cNazwa AS cInstytutNazwa,
        tPracownicy.cImie as cPracownikImie,
        tPracownicy.cNazwisko as cPracownikNazwisko,
        tPracownicy.cStopien as cPracownikStopien,
        tPracownicy.cStanowisko as cPracownikStanowisko
    from tKomputery
        join tInstytuty on tInstytuty.cID = tKomputery.cInstytut
        join tPracownicy on tPracownicy.cID = tKomputery.cOdpowiedzialny;


DROP VIEW IF EXISTS `vKonferencjeUczestnicy`;
CREATE VIEW `vKonferencjeUczestnicy` AS
    select
        a.*,
        p.cUN,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tKonferencjeUczestnicy as a
        left join tPracownicy as p on p.cID = a.cPracownikID
    order by a.cKonferencjaUdzialID, a.cNazwisko, a.cImie;


DROP VIEW IF EXISTS `vKonferencjeUdzial`;
CREATE VIEW `vKonferencjeUdzial` AS
    select
        u.*,
        k.cRaport,
        k.cRodzaj,
        k.cNazwa,
        k.cRok,
        k.cOdDo,
        k.cMiejsce,
        k.cOrganizator,
        k.cSponsor,
        k.cURL AS cKURL,
        k.cUwagi AS cKUwagi,
        concat_ws(', ', cNazwa, cMiejsce, cRok, cOdDo) AS cKonferencja,
        (select group_concat(concat_ws(' ', cImie, cNazwisko) order by cNazwisko, cImie separator ', ') from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID order by cNazwisko, cImie) as cUczestnicy,
        (select group_concat(cNazwisko order by cNazwisko, cImie) from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID order by cNazwisko, cImie) as cUczestnicyOrder,
        (select count(*) from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID and cAfiliacja = 1) as cAfiliacjaM,
        (select count(*) from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID and cAfiliacja = 2) as cAfiliacjaI,
        (select count(*) from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID and cAfiliacja = 3) as cAfiliacjaW,
        (select count(*) from tKonferencjeUczestnicy where cKonferencjaUdzialID = u.cID and cAfiliacja in (1, 2, 3)) as cAfiliacjaN
    from tKonferencjeUdzial as u
        join tKonferencje as k on k.cID = u.cKonferencjaID;


DROP VIEW IF EXISTS `vKonferencjeUdzialPracownicy`;
CREATE VIEW `vKonferencjeUdzialPracownicy` AS
    select
        vKonferencjeUdzial.*,
        u.cPracownikID
    from vKonferencjeUdzial
        join tKonferencjeUczestnicy as u on u.cKonferencjaUdzialID = vKonferencjeUdzial.cID
    order by u.cKonferencjaUdzialID, u.cNazwisko, u.cImie;


DROP VIEW IF EXISTS `vOdnosniki`;
CREATE VIEW `vOdnosniki` AS
    select
        o.*,
        k.cGrupa,
        k.cKategoria,
        k.cKolejnosc
    from tOdnosniki as o
        join tOdnosnikiKategorie as k on k.cID = o.cKategoriaID;


DROP VIEW IF EXISTS `vOgloszenia`;
CREATE VIEW `vOgloszenia` AS
    select
        o.*,
        cAktualne = 'N' or cDo <= now() AS cWygasle,
        cAktualne = 'T' and (cOd <= now() or cOd is null) and (now() <= cDo + interval 1 day or cDo is null) as cBiezace,
        cAktualne = 'T' and now() <= cOd AS cPrzyszle
    from tOgloszenia as o;


DROP VIEW IF EXISTS vPrRedakcja;
CREATE VIEW vPrRedakcja AS
    select
        x.*,
        c.cNazwa,
        c.cSkrot,
        c.cISSN,
        c.cEISSN,
        c.cWydawca,
        c.cAdres,
        c.cDOI,
        if((c.cURL <> ''), c.cURL, if((c.cDOI <> ''), concat('http://dx.doi.org/', c.cDOI), NULL)) AS cURL,
        c.cPunkty,
        c.cICLista,
        c.cICPunkty2010,
        c.cICPunkty2012,
        c.cJezyk,
        c.cUwagi
    from tPrRedakcja as x
        join tCzasopisma as c on c.cID = x.cCzasopismoID;


DROP VIEW IF EXISTS `vWydawnictwaZwarte`;
CREATE VIEW `vWydawnictwaZwarte` AS
    select
        w.cID AS cID,
        w.cTS AS cTS,
        w.cCT AS cCT,
        w.cCUSER AS cCUSER,
        w.cMUSER AS cMUSER,
        w.cZatwierdzone AS cZatwierdzone,
        w.cCzasopismoID AS cCzasopismoID,
        w.cKonferencjaID AS cKonferencjaID,
        w.cTytul AS cTytul,
        w.cPodtytul AS cPodtytul,
        if(k.cID, k.cOdDo, w.cDataKonferencji) AS cDataKonferencji,
        if(c.cID, c.cSkrot, w.cSeria) AS cSeria,
        w.cTom AS cTom,
        w.cMiesiac AS cMiesiac,
        w.cRok AS cRok,
        w.cWydanie AS cWydanie,
        w.cEdytor AS cEdytor,
        w.cEdytorOld AS cEdytorOld,
        w.cEdytorEtAl AS cEdytorEtAl,
        if(c.cID, c.cISSN, w.cISSN) AS cISSN,
        if(c.cID, c.cEISSN, w.cEISSN) AS cEISSN,
        w.cISBN AS cISBN,
        w.cEISBN AS cEISBN,
        if(k.cID, k.cOrganizator, w.cOrganizacja) AS cOrganizacja,
        if(c.cID, c.cWydawca, w.cWydawca) AS cWydawca,
        if(c.cID, c.cAdres, w.cAdres) AS cAdres,
        w.cDOI AS cDOI,
        if((w.cURL <> ''), w.cURL, if((w.cDOI <> ''), concat('http://dx.doi.org/', w.cDOI), NULL)) AS cURL,
        if(c.cID, c.cDOI, w.cDOISeria) AS cDOISeria,
        if(c.cID,
            if((c.cURL <> ''), c.cURL, if((c.cDOI <> ''), concat('http://dx.doi.org/', c.cDOI), NULL)),
            if((w.cURLSeria <> ''), w.cURLSeria, if((cDOISeria <> ''), concat('http://dx.doi.org/', cDOISeria), NULL))) AS cURLSeria,
        w.cJezyk AS cJezyk,
        w.cObjetosc AS cObjetosc,
        w.cPunkty AS cPunkty,
        w.cICLista AS cICLista,
        w.cICPunkty2010 AS cICPunkty2010,
        w.cICPunkty2012 AS cICPunkty2012,
        w.cICTimeStamp AS cICTimeStamp,
        w.cUwagi AS cUwagi,
        c.cNazwa AS cCNazwa,
        c.cPunkty AS cCPunkty,
        k.cNazwa AS cKNazwa,
        k.cRodzaj AS cKRodzaj,
        k.cRok AS cKRok,
        k.cOdDo AS cKOdDo,
        k.cMiejsce AS cKMiejsce,
        k.cOrganizator AS cKOrganizator,
        k.cSponsor AS cKSponsor,
        k.cURL AS cKURL,
        k.cUwagi AS cKUwagi,
        (select count(*) from tWydawnictwaZwarteEdytorzy where cWydawnictwoZwarteID = w.cID and cAfiliacja = 1) AS cAfiliacjaM,
        (select count(*) from tWydawnictwaZwarteEdytorzy where cWydawnictwoZwarteID = w.cID and cAfiliacja = 2) AS cAfiliacjaI,
        (select count(*) from tWydawnictwaZwarteEdytorzy where cWydawnictwoZwarteID = w.cID and cAfiliacja = 3) AS cAfiliacjaW,
        (select count(*) from tWydawnictwaZwarteEdytorzy where cWydawnictwoZwarteID = w.cID and 0 < cAfiliacja) AS cAfiliacjaN
    from tWydawnictwaZwarte as w
        left join tCzasopisma as c on c.cID = w.cCzasopismoID
        left join tKonferencje as k on k.cID = w.cKonferencjaID;


DROP VIEW IF EXISTS `vWydawnictwaZwarteEdytorzy`;
CREATE VIEW `vWydawnictwaZwarteEdytorzy` AS
    select
        a.*,
        p.cUN,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cPESEL as cPPESEL,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tWydawnictwaZwarteEdytorzy as a
        left join tPracownicy as p on p.cID = a.cPracownikID
    order by a.cWydawnictwoZwarteID, a.cKolejnosc, a.cNazwisko, a.cImie;


DROP VIEW IF EXISTS vPublikacje;
CREATE VIEW vPublikacje AS
    select
        p.cID AS cID,
        p.cTS AS cTS,
        p.cCT AS cCT,
        p.cCUSER AS cCUSER,
        p.cMUSER AS cMUSER,
        p.cRodzaj AS cRodzaj,
        p.cStatus AS cStatus,
        p.cStatusTS AS cStatusTS,
        p.cRaport AS cRaport,
        p.cTymczasowa AS cTymczasowa,
        p.cZatwierdzona AS cZatwierdzona,
        p.cUkryta AS cUkryta,
        p.cUsunieta AS cUsunieta,
        p.cCzasopismoID AS cCzasopismoID,
        p.cWydawnictwoZwarteID AS cWydawnictwoZwarteID,
        ifnull(p.cCzasopismoID, w.cCzasopismoID) AS cQCzasopismoID,
        p.cTitle AS cTitle,
        if((c.cID is not null), c.cSkrot, p.cJournal) AS cJournal,
        if((w.cID is not null), w.cTom, p.cVolume) AS cVolume,
        if((w.cID is not null), w.cRok, p.cYear) AS cYear,
        p.cNumber AS cNumber,
        p.cPages AS cPages,
        if((w.cID is not null), w.cMiesiac, p.cMonth) AS cMonth,
        p.cType AS cType, p.cChapter AS cChapter,
        if(w.cID, w.cTytul, p.cBooktitle) AS cBooktitle,
        if(w.cID, w.cPodtytul, p.cBooksubtitle) AS cBooksubtitle,
        if(w.cID, w.cDataKonferencji, p.cConferencedate) AS cConferencedate,
        if(w.cID, w.cWydanie, p.cEdition) AS cEdition,
        if(w.cID, if(wc.cID, wc.cSkrot, w.cSeria), p.cSeries) AS cSeries,
        if(w.cID, w.cEdytor, p.cEditor) AS cEditor,
        if(w.cID, if(wc.cID, wc.cWydawca, w.cWydawca), if(c.cID, c.cWydawca, p.cPublisher)) AS cPublisher,
        if(w.cID, if(wc.cID, wc.cAdres, w.cAdres), if(c.cID, c.cAdres, p.cAddress)) AS cAddress,
        p.cInstitution AS cInstitution, if((w.cID is not null), w.cOrganizacja, p.cOrganization) AS cOrganization,
        p.cHowpublished AS cHowpublished,
        p.cNote AS cNote,
        if(w.cID, if(wc.cID, wc.cISSN, w.cISSN), if(c.cID, c.cISSN, p.cISSN)) AS cISSN,
        if(w.cID, if(wc.cID, wc.cEISSN, w.cEISSN), if(c.cID, c.cEISSN, p.cEISSN)) AS cEISSN,
        if(w.cID, w.cISBN, p.cISBN) AS cISBN,
        if(w.cID, w.cEISBN, p.cEISBN) AS cEISBN,
        p.cDOI AS cDOI,
        if((p.cURL <> ''), p.cURL, if((p.cDOI <> ''), concat('http://dx.doi.org/', p.cDOI), NULL)) AS cURL,
        if((c.cURL <> ''), c.cURL, if((c.cDOI <> ''), concat('http://dx.doi.org/', c.cDOI), NULL)) AS cCURL,
        if((w.cURL <> ''), w.cURL, if((w.cDOI <> ''), concat('http://dx.doi.org/', w.cDOI), NULL)) AS cWURL,
        if(wc.cID, if((wc.cURL <> ''), wc.cURL, if((wc.cDOI <> ''), concat('http://dx.doi.org/', wc.cDOI), NULL)),
            if((w.cURLSeria <> ''), w.cURLSeria, if((w.cDOISeria <> ''), concat('http://dx.doi.org/', w.cDOISeria), NULL))) AS cWURLSeria,
        if(p.cPunkty, p.cPunkty, if((w.cID is not null), w.cPunkty, c.cPunkty)) AS cPunkty,
        p.cPunktyLista AS cPunktyLista,
        p.cPunktyData AS cPunktyData,
        p.cJezyk AS cJezyk,
        p.cObjetosc AS cObjetosc,
        p.cWykaz AS cWykaz,
        if(w.cID, w.cICLista, c.cICLista) AS cICLista,
        if(w.cID, w.cICPunkty2010, c.cICPunkty2010) AS cICPunkty2010,
        if(w.cID, w.cICPunkty2012, c.cICPunkty2012) AS cICPunkty2012,
        if(w.cID, w.cICTimeStamp, c.cICTimeStamp) AS cICTimeStamp,
        c.cNazwa AS cCNazwa,
        c.cSkrot AS cCSkrot,
        c.cISSN AS cCISSN,
        c.cEISSN AS cCEISSN,
        c.cDOI AS cCDOI,
        c.cPunkty AS cCPunkty,
        w.cCzasopismoID AS cWCzasopismoID,
        w.cKonferencjaID AS cWKonferencjaID,
        w.cTytul AS cWTytul,
        w.cPodtytul AS cWPodtytul,
        w.cDataKonferencji AS cWDataKonferencji,
        w.cSeria AS cWSeria,
        w.cRok AS cWRok,
        w.cEdytor AS cWEdytor,
        w.cEdytorEtAl AS cWEdytorEtAl,
        w.cWydanie AS cWWydanie,
        w.cISSN AS cWISSN,
        w.cEISSN AS cWEISSN,
        w.cISBN AS cWISBN,
        w.cEISBN AS cWEISBN,
        w.cWydawca AS cWWydawca,
        w.cAdres AS cWAdres,
        w.cDOI AS cWDOI,
        w.cDOISeria AS cWDOISeria,
        w.cJezyk AS cWJezyk,
        w.cObjetosc AS cWObjetosc,
        wc.cNazwa AS cWCNazwa,
        wc.cSkrot AS cWCSkrot,
        wc.cISSN AS cWCISSN,
        wc.cEISSN AS cWCEISSN,
        wc.cDOI AS cWCDOI,
        wc.cPunkty AS cWCPunkty,
        case cRodzaj
            when 'article' then if(c.cID, c.cSkrot, cJournal)
            when 'book' then if(c.cID, c.cSkrot, if(p.cSeries is not null, p.cSeries, p.cPublisher))
            when 'booklet' then cHowpublished
            when 'inbook' then cPublisher
            when 'incollection' then if(wc.cID, wc.cSkrot, if(w.cID is not null, if(w.cPodtytul <> '', concat_ws(', ', w.cTytul, w.cPodtytul), w.cTytul), cBooktitle))
            when 'inproceedings' then if(wc.cID, wc.cSkrot, if(w.cID is not null, if(w.cPodtytul <> '', concat_ws(', ', w.cTytul, w.cPodtytul), w.cTytul), cBooktitle))
            when 'manual' then cOrganization
            when 'techreport' then cInstitution
        end AS cMiejscePublikacji,
        (select group_concat(concat_ws(' ', cImie, cNazwisko) order by cKolejnosc, cNazwisko, cImie separator ', ') from tPublikacjeAutorzy where cPublikacjaID = p.cID) AS cAuthors,
        (select group_concat(cNazwisko order by cKolejnosc, cNazwisko, cImie) from tPublikacjeAutorzy where cPublikacjaID = p.cID) AS cAuthorsOrder,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cAfiliacja = 1) AS cAfiliacjaM,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cAfiliacja = 2) AS cAfiliacjaI,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cAfiliacja = 3) AS cAfiliacjaW,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and 0 < cAfiliacja) AS cAfiliacjaN,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cPrzypisanie = 1) AS cPrzypisanieM,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cPrzypisanie = 2) AS cPrzypisanieI,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and cPrzypisanie = 3) AS cPrzypisanieW,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cID and 0 < cPrzypisanie) AS cPrzypisanieN,
        floor(datediff(now(), makedate(p.cYear, 1)) / 365) AS cAge
    from tPublikacje as p
        left join tCzasopisma as c on c.cID = p.cCzasopismoID
        left join vWydawnictwaZwarte as w on w.cID = p.cWydawnictwoZwarteID
        left join tCzasopisma as wc on wc.cID = w.cCzasopismoID;


DROP VIEW IF EXISTS vPublikacjeTlumaczenia;
CREATE VIEW vPublikacjeTlumaczenia AS
    select
        p.cID AS cID,
        p.cTS AS cTS,
        p.cCT AS cCT,
        p.cCUSER AS cCUSER,
        p.cMUSER AS cMUSER,
        p.cRodzaj AS cRodzaj,
        p.cRaport AS cRaport,
        p.cTymczasowa AS cTymczasowa,
        p.cZatwierdzona AS cZatwierdzona,
        p.cUkryta AS cUkryta,
        p.cUsunieta AS cUsunieta,
        p.cPublikacjaID AS cPublikacjaID,
        p.cCzasopismoID AS cCzasopismoID,
        p.cWydawnictwoZwarteID AS cWydawnictwoZwarteID,
        ifnull(p.cCzasopismoID, w.cCzasopismoID) AS cQCzasopismoID,
        p.cTitle AS cTitle,
        o.cTitle AS cOTitle,
        if(p.cTitle <> '', p.cTitle, o.cTitle) AS cQTitle,
        if((c.cID), c.cSkrot, p.cJournal) AS cJournal,
        if(w.cID, w.cTom, p.cVolume) AS cVolume,
        if(w.cID, w.cRok, p.cYear) AS cYear,
        p.cNumber AS cNumber,
        p.cPages AS cPages,
        if((w.cID is not null), w.cMiesiac, p.cMonth) AS cMonth,
        p.cType AS cType,
        p.cChapter AS cChapter,
        if(w.cID, w.cTytul, p.cBooktitle) AS cBooktitle,
        if(w.cID, w.cPodtytul, p.cBooksubtitle) AS cBooksubtitle,
        if(w.cID, w.cDataKonferencji, p.cConferencedate) AS cConferencedate,
        if(w.cID, w.cWydanie, p.cEdition) AS cEdition,
        if(w.cID, if(wc.cID, wc.cSkrot, w.cSeria), p.cSeries) AS cSeries,
        if(w.cID, w.cEdytor, p.cEditor) AS cEditor,
        if(w.cID, if(wc.cID, wc.cWydawca, w.cWydawca), if(c.cID, c.cWydawca, p.cPublisher)) AS cPublisher,
        if(w.cID, if(wc.cID, wc.cAdres, w.cAdres), if(c.cID, c.cAdres, p.cAddress)) AS cAddress,
        p.cInstitution AS cInstitution, if((w.cID is not null), w.cOrganizacja, p.cOrganization) AS cOrganization,
        p.cHowpublished AS cHowpublished,
        p.cNote AS cNote,
        if(w.cID, if(wc.cID, wc.cISSN, w.cISSN), if(c.cID, c.cISSN, p.cISSN)) AS cISSN,
        if(w.cID, if(wc.cID, wc.cEISSN, w.cEISSN), if(c.cID, c.cEISSN, p.cEISSN)) AS cEISSN,
        if(w.cID, w.cISBN, p.cISBN) AS cISBN,
        if(w.cID, w.cEISBN, p.cEISBN) AS cEISBN,
        p.cDOI AS cDOI,
        if((p.cURL <> ''), p.cURL, if((p.cDOI <> ''), concat('http://dx.doi.org/', p.cDOI), NULL)) AS cURL,
        if((c.cURL <> ''), c.cURL, if((c.cDOI <> ''), concat('http://dx.doi.org/', c.cDOI), NULL)) AS cCURL,
        if((w.cURL <> ''), w.cURL, if((w.cDOI <> ''), concat('http://dx.doi.org/', w.cDOI), NULL)) AS cWURL,
        if(wc.cID, if((wc.cURL <> ''), wc.cURL, if((wc.cDOI <> ''), concat('http://dx.doi.org/', wc.cDOI), NULL)), if((w.cURLSeria <> ''), w.cURLSeria, if((w.cDOISeria <> ''), concat('http://dx.doi.org/', w.cDOISeria), NULL))) AS cWURLSeria,
        if(p.cPunkty, p.cPunkty, if((w.cID is not null), w.cPunkty, c.cPunkty)) AS cPunkty,
        p.cPunktyLista AS cPunktyLista,
        p.cPunktyData AS cPunktyData,
        p.cJezyk AS cJezyk,
        p.cObjetosc AS cObjetosc,
        p.cWykaz AS cWykaz,
        if(w.cID, w.cICLista, c.cICLista) AS cICLista,
        if(w.cID, w.cICPunkty2010, c.cICPunkty2010) AS cICPunkty2010,
        if(w.cID, w.cICPunkty2012, c.cICPunkty2012) AS cICPunkty2012,
        if(w.cID, w.cICTimeStamp, c.cICTimeStamp) AS cICTimeStamp,
        c.cNazwa AS cCNazwa,
        c.cSkrot AS cCSkrot,
        c.cISSN AS cCISSN,
        c.cEISSN AS cCEISSN,
        c.cDOI AS cCDOI,
        c.cPunkty AS cCPunkty,
        w.cCzasopismoID AS cWCzasopismoID,
        w.cKonferencjaID AS cWKonferencjaID,
        w.cTytul AS cWTytul,
        w.cPodtytul AS cWPodtytul,
        w.cDataKonferencji AS cWDataKonferencji,
        w.cSeria AS cWSeria,
        w.cRok AS cWRok,
        w.cEdytor AS cWEdytor,
        w.cEdytorEtAl AS cWEdytorEtAl,
        w.cWydanie AS cWWydanie,
        w.cISSN AS cWISSN,
        w.cEISSN AS cWEISSN,
        w.cISBN AS cWISBN,
        w.cEISBN AS cWEISBN,
        w.cWydawca AS cWWydawca,
        w.cAdres AS cWAdres,
        w.cDOI AS cWDOI,
        w.cDOISeria AS cWDOISeria,
        w.cJezyk AS cWJezyk,
        w.cObjetosc AS cWObjetosc,
        wc.cNazwa AS cWCNazwa,
        wc.cSkrot AS cWCSkrot,
        wc.cISSN AS cWCISSN,
        wc.cEISSN AS cWCEISSN,
        wc.cDOI AS cWCDOI,
        wc.cPunkty AS cWCPunkty,
        case p.cRodzaj
            when 'article' then if(c.cID, c.cSkrot, p.cJournal)
            when 'book' then if(c.cID, c.cSkrot, if(p.cSeries is not null, p.cSeries, p.cPublisher))
            when 'booklet' then p.cHowpublished
            when 'inbook' then p.cPublisher
            when 'incollection' then if(wc.cID, wc.cSkrot, if(w.cID is not null, if(w.cPodtytul <> '', concat_ws(', ', w.cTytul, w.cPodtytul), w.cTytul), p.cBooktitle))
            when 'inproceedings' then if(wc.cID, wc.cSkrot, if(w.cID is not null, if(w.cPodtytul <> '', concat_ws(', ', w.cTytul, w.cPodtytul), w.cTytul), p.cBooktitle))
            when 'manual' then p.cOrganization
            when 'techreport' then p.cInstitution
        end AS cMiejscePublikacji,
        (select group_concat(concat_ws(' ', cImie, cNazwisko) order by cKolejnosc, cNazwisko, cImie separator ', ') from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID) AS cAuthors,
        (select group_concat(cNazwisko order by cKolejnosc, cNazwisko, cImie) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID) AS cAuthorsOrder,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cAfiliacja = 1) AS cAfiliacjaM,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cAfiliacja = 2) AS cAfiliacjaI,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cAfiliacja = 3) AS cAfiliacjaW,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cAfiliacja in (1, 2, 3)) AS cAfiliacjaN,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cPrzypisanie = 1) AS cPrzypisanieM,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cPrzypisanie = 2) AS cPrzypisanieI,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cPrzypisanie = 3) AS cPrzypisanieW,
        (select count(*) from tPublikacjeAutorzy where cPublikacjaID = p.cPublikacjaID and cPrzypisanie in (1, 2, 3)) AS cPrzypisanieN,
        floor(datediff(now(), makedate(p.cYear, 1)) / 365) AS cAge
    from
        tPublikacjeTlumaczenia as p
        left join tCzasopisma as c on c.cID = p.cCzasopismoID
        left join vWydawnictwaZwarte as w on w.cID = p.cWydawnictwoZwarteID
        left join tCzasopisma as wc on wc.cID = w.cCzasopismoID
        left join tPublikacje as o on o.cID = p.cPublikacjaID;


DROP VIEW IF EXISTS vPublikacjePracownicy;
CREATE VIEW vPublikacjePracownicy AS
    select
        vPublikacje.*,
        a.cPracownikID AS cPracownikID
    from vPublikacje
        join tPublikacjeAutorzy a on a.cPublikacjaID = vPublikacje.cID
    order by a.cPublikacjaID, a.cKolejnosc, a.cNazwisko, a.cImie;


DROP VIEW IF EXISTS `vPublikacjeAutorzy`;
CREATE VIEW `vPublikacjeAutorzy` AS
    select
        a.*,
        p.cUN,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cPESEL as cPPESEL,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tPublikacjeAutorzy as a
        left join tPracownicy as p on p.cID = a.cPracownikID
    order by a.cPublikacjaID, a.cKolejnosc, a.cNazwisko, a.cImie;


DROP VIEW IF EXISTS vSylabusy;
CREATE VIEW vSylabusy AS
    select
        *,
        ceil(cSemestr /2) AS cRok
    from tSylabusy;


DROP VIEW IF EXISTS `vZaklady`;
CREATE VIEW `vZaklady` AS
    select
        z.*,
        (select group_concat(distinct cPokoj order by cPokoj separator ', ') from tPracownicy where cZaklad = z.cID and cStatus = 'pracuje') as cPokoje,
        (select group_concat(distinct cTel order by cTel separator ', ') from tPracownicy where cZaklad = z.cID and cStatus = 'pracuje') as cTelefony
    from tZaklady as z;


DROP VIEW IF EXISTS `vZaSeminaria`;
CREATE VIEW `vZaSeminaria` AS
    select
        s.*,
        (select group_concat(if(cUczelnia = '', cReferent, concat_ws(' - ', cReferent, cUczelnia)) separator ', ') from tZaSeminariaRef where cSeminarium = s.cID order by cCT) as cReferenci
    from tZaSeminaria as s
    order by s.cData desc;


DROP VIEW IF EXISTS `vZaSeminariaRef`;
CREATE VIEW `vZaSeminariaRef` AS
    select
        r.*,
        p.cUN,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tZaSeminariaRef as r
        left join tPracownicy as p on p.cID = r.cPracownikID;


DROP VIEW IF EXISTS vZespolyPoz;
CREATE VIEW vZespolyPoz AS
    select
        x.*,
        x.cOd <= now() and (x.cDO is null or now() <= x.cDO) as cTeraz,
        z.cNazwa,
        z.cPowolanyPrzez
    from tZespolyPoz as x
        join tZespoly as z on z.cID = x.cZespolID;

DROP VIEW IF EXISTS vZespolyPozPracownicy;
CREATE VIEW vZespolyPozPracownicy AS
    select
        x.*,
        x.cOd <= now() and (x.cDO is null or now() <= x.cDO) as cTeraz,
        p.cImie as cPImie,
        p.cNazwisko as cPNazwisko,
        p.cImieOjca as cPImieOjca,
        p.cGrupa as cPGrupa,
        p.cStopien as cPStopien,
        p.cInstytut as cPInstytut,
        p.cZaklad as cPZaklad,
        p.cStanowisko as cPStanowisko,
        p.cStatus as cPStatus
    from tZespolyPoz as x
        left join tPracownicy as p on p.cID = x.cPracownikID;



