/*==============================================================*/ /* DBMS name: Microsoft SQL Server 2008 */ /* Created on: 11/15/2014 10:32:51 PM */ /*==============================================================*/ /* A PowerDesigner altal legeneralt tisztogatasok nem szuksegesek if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('ELOADAS_A_JATEKRENDBEN') and o.name = 'FK_ELOADAS__ELOADAS_A_TEREM') alter table ELOADAS_A_JATEKRENDBEN drop constraint FK_ELOADAS__ELOADAS_A_TEREM go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('ELOADAS_A_JATEKRENDBEN') and o.name = 'FK_ELOADAS__ELOADAS_P_ELOADAS_') alter table ELOADAS_A_JATEKRENDBEN drop constraint FK_ELOADAS__ELOADAS_P_ELOADAS_ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('ELOADAS_PROJEKT') and o.name = 'FK_ELOADAS__SZINDARAB_SZINDARA') alter table ELOADAS_PROJEKT drop constraint FK_ELOADAS__SZINDARAB_SZINDARA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('E_P_HEZ_TARTOZO_SZEREPKOR') and o.name = 'FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_') alter table E_P_HEZ_TARTOZO_SZEREPKOR drop constraint FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('E_P_HEZ_TARTOZO_SZEREPKOR') and o.name = 'FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_2') alter table E_P_HEZ_TARTOZO_SZEREPKOR drop constraint FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_2 go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('E_P_SZEREPKORT_BETOLTO_SZEMELY') and o.name = 'FK_E_P_SZER_E_P_SZERE_ELOADAS_') alter table E_P_SZEREPKORT_BETOLTO_SZEMELY drop constraint FK_E_P_SZER_E_P_SZERE_ELOADAS_ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('E_P_SZEREPKORT_BETOLTO_SZEMELY') and o.name = 'FK_E_P_SZER_SZEMELY_E_SZEMELY') alter table E_P_SZEREPKORT_BETOLTO_SZEMELY drop constraint FK_E_P_SZER_SZEMELY_E_SZEMELY go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('HELYISEG') and o.name = 'FK_HELYISEG_TARTOZIK_ORSZAG') alter table HELYISEG drop constraint FK_HELYISEG_TARTOZIK_ORSZAG go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZEMELY') and o.name = 'FK_SZEMELY_TARTOZKOD_HELYISEG') alter table SZEMELY drop constraint FK_SZEMELY_TARTOZKOD_HELYISEG go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZEREPEL_AZ_ELOADASBAN') and o.name = 'FK_SZEREPEL_SZEREPEL__ELOADAS_') alter table SZEREPEL_AZ_ELOADASBAN drop constraint FK_SZEREPEL_SZEREPEL__ELOADAS_ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZEREPEL_AZ_ELOADASBAN') and o.name = 'FK_SZEREPEL_SZEREPEL__E_P_SZER') alter table SZEREPEL_AZ_ELOADASBAN drop constraint FK_SZEREPEL_SZEREPEL__E_P_SZER go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZERZO') and o.name = 'FK_SZERZO_SZERZO_SZINDARA') alter table SZERZO drop constraint FK_SZERZO_SZERZO_SZINDARA go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZERZO') and o.name = 'FK_SZERZO_SZERZO2_SZEMELY') alter table SZERZO drop constraint FK_SZERZO_SZERZO2_SZEMELY go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZINDARAB') and o.name = 'FK_SZINDARA_FORDITO_SZEMELY') alter table SZINDARAB drop constraint FK_SZINDARA_FORDITO_SZEMELY go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZINDARAB') and o.name = 'FK_SZINDARA_SZI_MUFAJ_MUFAJ') alter table SZINDARAB drop constraint FK_SZINDARA_SZI_MUFAJ_MUFAJ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZINHAZ') and o.name = 'FK_SZINHAZ_MUKODIK_HELYISEG') alter table SZINHAZ drop constraint FK_SZINHAZ_MUKODIK_HELYISEG go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZ_H_E_P') and o.name = 'FK_SZ_H_E_P_SZ_H_E_P_SZINHAZ') alter table SZ_H_E_P drop constraint FK_SZ_H_E_P_SZ_H_E_P_SZINHAZ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('SZ_H_E_P') and o.name = 'FK_SZ_H_E_P_SZ_H_E_P2_ELOADAS_') alter table SZ_H_E_P drop constraint FK_SZ_H_E_P_SZ_H_E_P2_ELOADAS_ go if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('TEREM') and o.name = 'FK_TEREM_SZINHAZ_T_SZINHAZ') alter table TEREM drop constraint FK_TEREM_SZINHAZ_T_SZINHAZ go if exists (select 1 from sysindexes where id = object_id('ELOADAS_A_JATEKRENDBEN') and name = 'ELOADAS_PROJEKT_A_JATEKRENDBEN_FK' and indid > 0 and indid < 255) drop index ELOADAS_A_JATEKRENDBEN.ELOADAS_PROJEKT_A_JATEKRENDBEN_FK go if exists (select 1 from sysindexes where id = object_id('ELOADAS_A_JATEKRENDBEN') and name = 'ELOADAS_A_TEREMBEN_FK' and indid > 0 and indid < 255) drop index ELOADAS_A_JATEKRENDBEN.ELOADAS_A_TEREMBEN_FK go if exists (select 1 from sysobjects where id = object_id('ELOADAS_A_JATEKRENDBEN') and type = 'U') drop table ELOADAS_A_JATEKRENDBEN go if exists (select 1 from sysindexes where id = object_id('ELOADAS_PROJEKT') and name = 'SZINDARAB_E_P_FK' and indid > 0 and indid < 255) drop index ELOADAS_PROJEKT.SZINDARAB_E_P_FK go if exists (select 1 from sysobjects where id = object_id('ELOADAS_PROJEKT') and type = 'U') drop table ELOADAS_PROJEKT go if exists (select 1 from sysobjects where id = object_id('ELOADAS_PROJEKT_SZEREPKOR') and type = 'U') drop table ELOADAS_PROJEKT_SZEREPKOR go if exists (select 1 from sysindexes where id = object_id('E_P_HEZ_TARTOZO_SZEREPKOR') and name = 'E_P_HEZ_TARTOZO_SZEREPKOR_FK' and indid > 0 and indid < 255) drop index E_P_HEZ_TARTOZO_SZEREPKOR.E_P_HEZ_TARTOZO_SZEREPKOR_FK go if exists (select 1 from sysindexes where id = object_id('E_P_HEZ_TARTOZO_SZEREPKOR') and name = 'E_P_HEZ_TARTOZO_SZEREPKOR2_FK' and indid > 0 and indid < 255) drop index E_P_HEZ_TARTOZO_SZEREPKOR.E_P_HEZ_TARTOZO_SZEREPKOR2_FK go if exists (select 1 from sysobjects where id = object_id('E_P_HEZ_TARTOZO_SZEREPKOR') and type = 'U') drop table E_P_HEZ_TARTOZO_SZEREPKOR go if exists (select 1 from sysindexes where id = object_id('E_P_SZEREPKORT_BETOLTO_SZEMELY') and name = 'E_P_SZEREPKOR_SZEMELY_FK' and indid > 0 and indid < 255) drop index E_P_SZEREPKORT_BETOLTO_SZEMELY.E_P_SZEREPKOR_SZEMELY_FK go if exists (select 1 from sysindexes where id = object_id('E_P_SZEREPKORT_BETOLTO_SZEMELY') and name = 'SZEMELY_E_P_SZEREPKOR_FK' and indid > 0 and indid < 255) drop index E_P_SZEREPKORT_BETOLTO_SZEMELY.SZEMELY_E_P_SZEREPKOR_FK go if exists (select 1 from sysobjects where id = object_id('E_P_SZEREPKORT_BETOLTO_SZEMELY') and type = 'U') drop table E_P_SZEREPKORT_BETOLTO_SZEMELY go if exists (select 1 from sysindexes where id = object_id('HELYISEG') and name = 'TARTOZIK_FK' and indid > 0 and indid < 255) drop index HELYISEG.TARTOZIK_FK go if exists (select 1 from sysobjects where id = object_id('HELYISEG') and type = 'U') drop table HELYISEG go if exists (select 1 from sysobjects where id = object_id('MUFAJ') and type = 'U') drop table MUFAJ go if exists (select 1 from sysobjects where id = object_id('ORSZAG') and type = 'U') drop table ORSZAG go if exists (select 1 from sysindexes where id = object_id('SZEMELY') and name = 'TARTOZKODIK_FK' and indid > 0 and indid < 255) drop index SZEMELY.TARTOZKODIK_FK go if exists (select 1 from sysobjects where id = object_id('SZEMELY') and type = 'U') drop table SZEMELY go if exists (select 1 from sysindexes where id = object_id('SZEREPEL_AZ_ELOADASBAN') and name = 'SZEREPEL_AZ_ELOADASBAN_FK' and indid > 0 and indid < 255) drop index SZEREPEL_AZ_ELOADASBAN.SZEREPEL_AZ_ELOADASBAN_FK go if exists (select 1 from sysindexes where id = object_id('SZEREPEL_AZ_ELOADASBAN') and name = 'SZEREPEL_AZ_ELOADASBAN2_FK' and indid > 0 and indid < 255) drop index SZEREPEL_AZ_ELOADASBAN.SZEREPEL_AZ_ELOADASBAN2_FK go if exists (select 1 from sysobjects where id = object_id('SZEREPEL_AZ_ELOADASBAN') and type = 'U') drop table SZEREPEL_AZ_ELOADASBAN go if exists (select 1 from sysindexes where id = object_id('SZERZO') and name = 'SZERZO_FK' and indid > 0 and indid < 255) drop index SZERZO.SZERZO_FK go if exists (select 1 from sysindexes where id = object_id('SZERZO') and name = 'SZERZO2_FK' and indid > 0 and indid < 255) drop index SZERZO.SZERZO2_FK go if exists (select 1 from sysobjects where id = object_id('SZERZO') and type = 'U') drop table SZERZO go if exists (select 1 from sysindexes where id = object_id('SZINDARAB') and name = 'FORDITO_FK' and indid > 0 and indid < 255) drop index SZINDARAB.FORDITO_FK go if exists (select 1 from sysindexes where id = object_id('SZINDARAB') and name = 'SZI_MUFAJA_FK' and indid > 0 and indid < 255) drop index SZINDARAB.SZI_MUFAJA_FK go if exists (select 1 from sysobjects where id = object_id('SZINDARAB') and type = 'U') drop table SZINDARAB go if exists (select 1 from sysindexes where id = object_id('SZINHAZ') and name = 'MUKODIK_FK' and indid > 0 and indid < 255) drop index SZINHAZ.MUKODIK_FK go if exists (select 1 from sysobjects where id = object_id('SZINHAZ') and type = 'U') drop table SZINHAZ go if exists (select 1 from sysindexes where id = object_id('SZ_H_E_P') and name = 'SZ_H_E_P_FK' and indid > 0 and indid < 255) drop index SZ_H_E_P.SZ_H_E_P_FK go if exists (select 1 from sysindexes where id = object_id('SZ_H_E_P') and name = 'SZ_H_E_P2_FK' and indid > 0 and indid < 255) drop index SZ_H_E_P.SZ_H_E_P2_FK go if exists (select 1 from sysobjects where id = object_id('SZ_H_E_P') and type = 'U') drop table SZ_H_E_P go if exists (select 1 from sysindexes where id = object_id('TEREM') and name = 'SZINHAZ_TERME_FK' and indid > 0 and indid < 255) drop index TEREM.SZINHAZ_TERME_FK go if exists (select 1 from sysobjects where id = object_id('TEREM') and type = 'U') drop table TEREM go A PowerDesigner altal legeneralt tisztogatasok nem szuksegesek*/ -- A kezdetek kezdete-- A kezdetek kezdete -- A kezdetek kezdete-- A kezdetek kezdete /*==============================================================*/ /* Table: ORSZAG */ /*==============================================================*/ create table ORSZAG ( ORSZAG_AZ numeric identity, ORSZAGNEV varchar(30) not null, ORSZAG_JELZES char(5) null, constraint PK_ORSZAG primary key nonclustered (ORSZAG_AZ) ) go /*==============================================================*/ /* Table: HELYISEG */ /*==============================================================*/ create table HELYISEG ( HELYISEG_AZ numeric identity, ORSZAG_AZ numeric not null foreign key references ORSZAG (ORSZAG_AZ), HELYISEGNEV varchar(30) not null, H_IRANYITOSZAM numeric(5) not null, constraint PK_HELYISEG primary key nonclustered (HELYISEG_AZ) ) go /* orszag_az kulso kulcs beepitve a helyisegbe alter table HELYISEG add constraint FK_HELYISEG_TARTOZIK_ORSZAG foreign key (ORSZAG_AZ) references ORSZAG (ORSZAG_AZ) go orszag_az kulso kulcs beepitve a helyisegbe - vege */ /*==============================================================*/ /* Table: SZINHAZ */ /*==============================================================*/ create table SZINHAZ ( SZINHAZ_AZ numeric identity, HELYISEG_AZ numeric not null foreign key references HELYISEG (HELYISEG_AZ), SZINHAZNEV varchar(100) not null, SZ_H_CIM_IRANYITOSZAM numeric(5) not null, SZ_H_CIM_HELYSEG varchar(30) not null, SZ_H_CIM_UTCA_HSZ varchar(30) null, SZ_H_TELEFON varchar(20) null, SZ_H_WWW_CIM varchar(100) null, SZ_H_EMAIL varchar(50) null, SZ_H_VAJDASAGI bit not null, SZ_H_AMATOR bit not null, constraint PK_SZINHAZ primary key nonclustered (SZINHAZ_AZ) ) go /* helyiseg_az kulso kulcs beepitve a szinhazba alter table SZINHAZ add constraint FK_SZINHAZ_MUKODIK_HELYISEG foreign key (HELYISEG_AZ) references HELYISEG (HELYISEG_AZ) go helyiseg_az kulso kulcs beepitve a szinhazba - vege */ /*==============================================================*/ /* Table: SZEMELY */ /*==============================================================*/ create table SZEMELY ( SZEMELY_AZ numeric identity, HELYISEG_AZ numeric not null foreign key references HELYISEG (HELYISEG_AZ), SZE_VEZETEKNEV varchar(20) not null, SZE_NEV varchar(20) not null, SZE_ELETRAJZ varchar(5000) null, SZE_VAJDASAGI bit not null, SZE_AMATOR bit not null, SZE_AKTIV bit not null, constraint PK_SZEMELY primary key nonclustered (SZEMELY_AZ) ) go /* helyiseg_az kulso kulcs beepitve a szemelybe alter table SZEMELY add constraint FK_SZEMELY_TARTOZKOD_HELYISEG foreign key (HELYISEG_AZ) references HELYISEG (HELYISEG_AZ) go helyiseg_az kulso kulcs beepitve a szemelybe - vege */ /*==============================================================*/ /* Table: MUFAJ */ /*==============================================================*/ create table MUFAJ ( MUFAJ_AZON numeric identity, MUFAJ_NEVE varchar(50) not null, constraint PK_MUFAJ primary key nonclustered (MUFAJ_AZON) ) go /*==============================================================*/ /* Table: TEREM */ /*==============================================================*/ create table TEREM ( SZINHAZ_AZ numeric not null foreign key references SZINHAZ (SZINHAZ_AZ), TEREM_AZ numeric identity, TEREM_NEVE varchar(50) not null, TE_FEROHELYEK_SZAMA numeric(3) not null, constraint PK_TEREM primary key nonclustered (SZINHAZ_AZ, TEREM_AZ) ) go /* szinhaz_az kulso kulcs beepitve a terembe alter table TEREM add constraint FK_TEREM_SZINHAZ_T_SZINHAZ foreign key (SZINHAZ_AZ) references SZINHAZ (SZINHAZ_AZ) go szinhaz_az kulso kulcs beepitve a terembe - vege */ /*==============================================================*/ /* Table: SZINDARAB */ /*==============================================================*/ create table SZINDARAB ( SZINDARAB_AZ numeric identity, MUFAJ_AZON numeric not null foreign key references MUFAJ (MUFAJ_AZON), SZEMELY_AZ_FORD numeric not null foreign key references SZEMELY (SZEMELY_AZ), SZINDARAB_CIME varchar(50) not null, SZI_FELVONAS_SZAMA numeric(1) not null, constraint PK_SZINDARAB primary key nonclustered (SZINDARAB_AZ) ) go /* szemely_az_ford es mufaj_azon kulso kulcsok beepitve a szindarabba alter table SZINDARAB add constraint FK_SZINDARA_FORDITO_SZEMELY foreign key (SZEMELY_AZ) references SZEMELY (SZEMELY_AZ) go alter table SZINDARAB add constraint FK_SZINDARA_SZI_MUFAJ_MUFAJ foreign key (MUFAJ_AZON) references MUFAJ (MUFAJ_AZON) go szemely_az_ford es mufaj_azon kulso kulcsok beepitve a szindarabba - vege */ /*==============================================================*/ /* Table: SZERZO */ /*==============================================================*/ create table SZERZO ( SZINDARAB_AZ numeric not null foreign key references SZINDARAB (SZINDARAB_AZ), SZEMELY_AZ numeric not null foreign key references SZEMELY (SZEMELY_AZ), constraint PK_SZERZO primary key nonclustered (SZINDARAB_AZ, SZEMELY_AZ) ) go /* szemely_az es szindarad_azon kulso kulcsok beepitve a szerzobe alter table SZERZO add constraint FK_SZERZO_SZERZO_SZINDARA foreign key (SZINDARAB_AZ) references SZINDARAB (SZINDARAB_AZ) go alter table SZERZO add constraint FK_SZERZO_SZERZO2_SZEMELY foreign key (SZEMELY_AZ) references SZEMELY (SZEMELY_AZ) go szemely_az es szindarad_azon kulso kulcsok beepitve a szerzobe - vege */ /*==============================================================*/ /* Table: ELOADAS_PROJEKT */ /*==============================================================*/ create table ELOADAS_PROJEKT ( SZINDARAB_AZ numeric not null foreign key references SZINDARAB (SZINDARAB_AZ), ELOADAS_CIME varchar(50) not null, EL_FELVONAS_SZAMA numeric(1) not null, EL_TARTALOM varchar(5000) null, EL_BEMUTATO_DATUM datetime not null, EL_HOSSZA_PERC numeric(3) not null, REPERTOARON bit not null, constraint PK_ELOADAS_PROJEKT primary key nonclustered (SZINDARAB_AZ, ELOADAS_CIME) ) go /* a szindarab_az kulso kulcs beepitve az eloadas_projektbe alter table ELOADAS_PROJEKT add constraint FK_ELOADAS__SZINDARAB_SZINDARA foreign key (SZINDARAB_AZ) references SZINDARAB (SZINDARAB_AZ) go a szindarab_az kulso kulcs beepitve az eloadas_projektbe - vege */ /*==============================================================*/ /* Table: SZ_H_E_P */ /*==============================================================*/ create table SZ_H_E_P ( SZINHAZ_AZ numeric not null foreign key references SZINHAZ (SZINHAZ_AZ), SZINDARAB_AZ numeric not null, ELOADAS_CIME varchar(50) not null, constraint PK_SZ_H_E_P primary key nonclustered (SZINHAZ_AZ, SZINDARAB_AZ, ELOADAS_CIME), constraint FK_E_P foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME) ) go /* szinhaz_az kulso kulcs es az eloadas_projekt osszetett kulso kulcs beepitve a SZ_H_E_P tablaba alter table SZ_H_E_P add constraint FK_SZ_H_E_P_SZ_H_E_P_SZINHAZ foreign key (SZINHAZ_AZ) references SZINHAZ (SZINHAZ_AZ) go alter table SZ_H_E_P add constraint FK_SZ_H_E_P_SZ_H_E_P2_ELOADAS_ foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME) go szinhaz_az kulso kulcs es az eloadas_projekt osszetett kulso kulcs beepitve a SZ_H_E_P tablaba - vege */ -- kovetkezik: eloadas a jatekrendben!!!! /*==============================================================*/ /* Table: ELOADAS_A_JATEKRENDBEN */ /*==============================================================*/ create table ELOADAS_A_JATEKRENDBEN ( SZINDARAB_AZ numeric not null, ELOADAS_CIME varchar(50) not null, SZINHAZ_AZ numeric not null, TEREM_AZ numeric not null, ELOADAS_KEZDETE datetime not null, constraint PK_ELOADAS_A_JATEKRENDBEN primary key nonclustered (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ, ELOADAS_KEZDETE), constraint FK_ELOADAS__PROJEKT foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME), constraint FK_ELOADAS_TEREM foreign key (SZINHAZ_AZ, TEREM_AZ) references TEREM (SZINHAZ_AZ, TEREM_AZ) ) go /* fk_eloadas_projekt es az fk_eloadas_terem osszetett kulcsok beepitve az eloadas_a_jatekrendben tablaba alter table ELOADAS_A_JATEKRENDBEN add constraint FK_ELOADAS__ELOADAS_A_TEREM foreign key (SZINHAZ_AZ, TEREM_AZ) references TEREM (SZINHAZ_AZ, TEREM_AZ) go alter table ELOADAS_A_JATEKRENDBEN add constraint FK_ELOADAS__ELOADAS_P_ELOADAS_ foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME) go fk_eloadas_projekt es az fk_eloadas_terem osszetett kulcsok beepitve az eloadas_a_jatekrendben tablaba - vege */ -- kovetkezik: az E_P_szerepkor!!!! /*==============================================================*/ /* Table: ELOADAS_PROJEKT_SZEREPKOR !!!!! ennek csak SZEREPKOR-nek kellene lennie !!!!! */ /*==============================================================*/ create table SZEREPKOR ( SZEREPKOR_AZ numeric not null, SZEREPKOR varchar(30) not null, constraint PK_SZEREPKOR primary key nonclustered (SZEREPKOR_AZ) ) go -- kovetkezik: az e_p_hez_tartozo_szerepkor!!!! /*==============================================================*/ /* Table: E_P_HEZ_TARTOZO_SZEREPKOR */ /*==============================================================*/ create table E_P_HEZ_TARTOZO_SZEREPKOR ( SZEREPKOR_AZ numeric not null foreign key references SZEREPKOR (SZEREPKOR_AZ), SZINDARAB_AZ numeric not null, ELOADAS_CIME varchar(50) not null, constraint PK_E_P_HEZ_TARTOZO_SZEREPKOR primary key nonclustered (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME), constraint FK_ELOADAS_PROJEKT foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME) ) go /* fk_szerepkor kulso kulcs es az fk_eloadas_projekt osszetett kulso beepitve az E_P_HEZ_TARTOZO_SZEREPKOR tablaba alter table E_P_HEZ_TARTOZO_SZEREPKOR add constraint FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_ foreign key (SZEREPKOR) references ELOADAS_PROJEKT_SZEREPKOR (SZEREPKOR) go alter table E_P_HEZ_TARTOZO_SZEREPKOR add constraint FK_E_P_HEZ__E_P_HEZ_T_ELOADAS_2 foreign key (SZINDARAB_AZ, ELOADAS_CIME) references ELOADAS_PROJEKT (SZINDARAB_AZ, ELOADAS_CIME) go fk_szerepkor kulso kulcs es az fk_eloadas_projekt osszetett kulso beepitve az E_P_HEZ_TARTOZO_SZEREPKOR tablaba - vege */ -- kovetkezik: az E_P_szerepkort_betolto_szemely!!!! /*==============================================================*/ /* Table: E_P_SZEREPKORT_BETOLTO_SZEMELY */ /*==============================================================*/ create table E_P_SZEREPKORT_BETOLTO_SZEMELY ( SZEREPKOR_AZ numeric not null, SZINDARAB_AZ numeric not null, ELOADAS_CIME varchar(50) not null, SZEMELY_AZ numeric not null, constraint PK_E_P_SZEREPKORT_BETOLTO_SZEM primary key nonclustered (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME, SZEMELY_AZ), constraint FK_E_P_SZEREPKOR foreign key (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME) references E_P_HEZ_TARTOZO_SZEREPKOR (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME), constraint FK_SZEMELY foreign key (SZEMELY_AZ) references SZEMELY (SZEMELY_AZ) ) go /* fk_szemely kulso kulcs es az fk_e_p_szerepkor osszetett kulso beepitve az E_P_SZEREPKORT_BETOLTO_SZEMELY tablaba alter table E_P_SZEREPKORT_BETOLTO_SZEMELY add constraint FK_E_P_SZER_E_P_SZERE_ELOADAS_ foreign key (SZEREPKOR) references ELOADAS_PROJEKT_SZEREPKOR (SZEREPKOR) go alter table E_P_SZEREPKORT_BETOLTO_SZEMELY add constraint FK_E_P_SZER_SZEMELY_E_SZEMELY foreign key (SZEMELY_AZ) references SZEMELY (SZEMELY_AZ) go fk_szemely kulso kulcs es az fk_e_p_szerepkor osszetett kulso beepitve az E_P_SZEREPKORT_BETOLTO_SZEMELY tablaba - vege */ -- kovetkezik: a Szerepel_az_eloadasban!!!! /*==============================================================*/ /* Table: SZEREPEL_AZ_ELOADASBAN */ /*==============================================================*/ create table SZEREPEL_AZ_ELOADASBAN ( SZINDARAB_AZ numeric not null, ELOADAS_CIME varchar(50) not null, SZINHAZ_AZ numeric not null, TEREM_AZ numeric not null, ELOADAS_KEZDETE datetime not null, SZEREPKOR_AZ numeric not null, SZEMELY_AZ numeric not null, constraint PK_SZEREPEL_AZ_ELOADASBAN primary key nonclustered (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ, ELOADAS_KEZDETE, SZEREPKOR_AZ, SZEMELY_AZ), constraint FK_ELOADAS_A_JATEKRENDBEN foreign key (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ, ELOADAS_KEZDETE) references ELOADAS_A_JATEKRENDBEN (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ, ELOADAS_KEZDETE), constraint FK_E_P_SZEREPKORT_BETOLTO_SZEMELY foreign key (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME, SZEMELY_AZ) references E_P_SZEREPKORT_BETOLTO_SZEMELY (SZEREPKOR_AZ, SZINDARAB_AZ, ELOADAS_CIME, SZEMELY_AZ) ) go /* fk_szerepel_az_eloadasban osszetett kulso kulcs es fk_e_p_szerepkort_betolto_szemely osszetett kulso lucs beepitve a SZEREPEL_AZ_ELOADASBAN tablaba alter table SZEREPEL_AZ_ELOADASBAN add constraint FK_SZEREPEL_SZEREPEL__ELOADAS_ foreign key (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ) references ELOADAS_A_JATEKRENDBEN (SZINDARAB_AZ, ELOADAS_CIME, SZINHAZ_AZ, TEREM_AZ) go alter table SZEREPEL_AZ_ELOADASBAN add constraint FK_SZEREPEL_SZEREPEL__E_P_SZER foreign key (SZEREPKOR, SZEMELY_AZ) references E_P_SZEREPKORT_BETOLTO_SZEMELY (SZEREPKOR, SZEMELY_AZ) go fk_szerepel_az_eloadasban osszetett kulso kulcs es fk_e_p_szerepkort_betolto_szemely osszetett kulso lucs beepitve a SZEREPEL_AZ_ELOADASBAN tablaba - vege */ -- EDDIG!!!! -- EDDIG!!!! -- EDDIG!!!! /* Az indexek generalasa most masodlagos kihivas /*==============================================================*/ /* Index: ELOADAS_A_TEREMBEN_FK */ /*==============================================================*/ create index ELOADAS_A_TEREMBEN_FK on ELOADAS_A_JATEKRENDBEN ( SZINHAZ_AZ ASC, TEREM_AZ ASC ) go /*==============================================================*/ /* Index: ELOADAS_PROJEKT_A_JATEKRENDBEN_FK */ /*==============================================================*/ create index ELOADAS_PROJEKT_A_JATEKRENDBEN_FK on ELOADAS_A_JATEKRENDBEN ( SZINDARAB_AZ ASC, ELOADAS_CIME ASC ) go /*==============================================================*/ /* Index: SZINDARAB_E_P_FK */ /*==============================================================*/ create index SZINDARAB_E_P_FK on ELOADAS_PROJEKT ( SZINDARAB_AZ ASC ) go /*==============================================================*/ /* Index: E_P_HEZ_TARTOZO_SZEREPKOR2_FK */ /*==============================================================*/ create index E_P_HEZ_TARTOZO_SZEREPKOR2_FK on E_P_HEZ_TARTOZO_SZEREPKOR ( SZINDARAB_AZ ASC, ELOADAS_CIME ASC ) go /*==============================================================*/ /* Index: E_P_HEZ_TARTOZO_SZEREPKOR_FK */ /*==============================================================*/ create index E_P_HEZ_TARTOZO_SZEREPKOR_FK on E_P_HEZ_TARTOZO_SZEREPKOR ( SZEREPKOR ASC ) go /*==============================================================*/ /* Index: SZEMELY_E_P_SZEREPKOR_FK */ /*==============================================================*/ create index SZEMELY_E_P_SZEREPKOR_FK on E_P_SZEREPKORT_BETOLTO_SZEMELY ( SZEMELY_AZ ASC ) go /*==============================================================*/ /* Index: E_P_SZEREPKOR_SZEMELY_FK */ /*==============================================================*/ create index E_P_SZEREPKOR_SZEMELY_FK on E_P_SZEREPKORT_BETOLTO_SZEMELY ( SZEREPKOR ASC ) go /*==============================================================*/ /* Index: TARTOZIK_FK */ /*==============================================================*/ create index TARTOZIK_FK on HELYISEG ( ORSZAG_AZ ASC ) go /*==============================================================*/ /* Index: TARTOZKODIK_FK */ /*==============================================================*/ create index TARTOZKODIK_FK on SZEMELY ( HELYISEG_AZ ASC ) go /*==============================================================*/ /* Index: SZEREPEL_AZ_ELOADASBAN2_FK */ /*==============================================================*/ create index SZEREPEL_AZ_ELOADASBAN2_FK on SZEREPEL_AZ_ELOADASBAN ( SZEREPKOR ASC, SZEMELY_AZ ASC ) go /*==============================================================*/ /* Index: SZEREPEL_AZ_ELOADASBAN_FK */ /*==============================================================*/ create index SZEREPEL_AZ_ELOADASBAN_FK on SZEREPEL_AZ_ELOADASBAN ( SZINDARAB_AZ ASC, ELOADAS_CIME ASC, SZINHAZ_AZ ASC, TEREM_AZ ASC ) go /*==============================================================*/ /* Index: SZERZO2_FK */ /*==============================================================*/ create index SZERZO2_FK on SZERZO ( SZEMELY_AZ ASC ) go /*==============================================================*/ /* Index: SZERZO_FK */ /*==============================================================*/ create index SZERZO_FK on SZERZO ( SZINDARAB_AZ ASC ) go /*==============================================================*/ /* Index: SZI_MUFAJA_FK */ /*==============================================================*/ create index SZI_MUFAJA_FK on SZINDARAB ( MUFAJ_AZON ASC ) go /*==============================================================*/ /* Index: FORDITO_FK */ /*==============================================================*/ create index FORDITO_FK on SZINDARAB ( SZEMELY_AZ ASC ) go /*==============================================================*/ /* Index: MUKODIK_FK */ /*==============================================================*/ create index MUKODIK_FK on SZINHAZ ( HELYISEG_AZ ASC ) go /*==============================================================*/ /* Index: SZ_H_E_P2_FK */ /*==============================================================*/ create index SZ_H_E_P2_FK on SZ_H_E_P ( SZINDARAB_AZ ASC, ELOADAS_CIME ASC ) go /*==============================================================*/ /* Index: SZ_H_E_P_FK */ /*==============================================================*/ create index SZ_H_E_P_FK on SZ_H_E_P ( SZINHAZ_AZ ASC ) go /*==============================================================*/ /* Index: SZINHAZ_TERME_FK */ /*==============================================================*/ create index SZINHAZ_TERME_FK on TEREM ( SZINHAZ_AZ ASC ) go Az indexek generalasa most masodlagos kihivas - vege */ /* Nyolcadik het - 14h Nyolcadik het - 14h Nyolcadik het - 14h Nyolcadik het - 14h Nyolcadik het - 14h */ use Szinhazportal go insert ORSZAG values ('Szerbia', 'SRB'); go select * from ORSZAG; go insert HELYISEG values (1, 'Szabadka', 24000); go select * from HELYISEG; go insert SZINHAZ values (1, 'Nepszinhaz Szbadka', 24000, 'Szabadka', 'Szabadsag ter 1', '+381 24 652-701', 'www.SzabadkaiNepszinhaz.rs', 'info@szabadkainepszinhaz.rs', 'true', 'false'); go select* from SZINHAZ; go insert SZINHAZ values (1, 'Kosztolanyi Dezso Szinhaz Szbadka', 24000, 'Szabadka', 'Fasizmus Aldozatainak Tere 5', '+381 24 557-471', 'www.KosztolanyiSzinhaz.rs', 'info@kosztolanyiszinhaz.rs', 'true', 'false'); go insert SZINHAZ values (1, 'Tanyaszinhaz', 21000, 'Ujvidek', 'Futaki ut 2', '+381 21 677-477', 'www.Tanyaszinhaz.rs', 'info@tanyaszinhaz.rs', 'true', 'true'); go insert SZINHAZ values (1, 'Ujvideki Szinhaz', 21000, 'Ujvidek', 'Jovana Subotica utca 2-3', '+381 21 688-488', 'www.Ujvidekiszinhaz.rs', 'info@ujvidekizinhaz.rs', 'true', 'false'); go select * from SZINHAZ; go -- Listazzuk a szinhaznekeket a szinhaz tablabol select szinhaznev from SZINHAZ; go -- Listazzuk a szinhaznekeket a hozzatartozo varosnevekkel es cimekkel a szinhaz tablabol select szinhaznev, SZ_H_CIM_HELYSEG, SZ_H_CIM_UTCA_HSZ from SZINHAZ; go -- Listazzuk a szinhaznekeket a hozzatartozo varosnevekkel es cimekkel -- a szabadkai cimu (helysegnevu) szinhazakra a szinhaz tablabol select szinhaznev, SZ_H_CIM_HELYSEG, SZ_H_CIM_UTCA_HSZ from SZINHAZ where SZ_H_CIM_HELYSEG='Szabadka'; go -- Listazzuk az amator szinhazakat - szinhaznevekkel es a hozzatartozo -- varosnevekkel es cimekkel -- a szinhaz tablabol select szinhaznev, SZ_H_CIM_HELYSEG, SZ_H_CIM_UTCA_HSZ from SZINHAZ where SZ_H_AMATOR = 1; go -- Hany szinhaz szerepel a kimutatasunkban select COUNT(*) from SZINHAZ; go select COUNT(SZINHAZ_AZ) from SZINHAZ; go select * from SZINHAZ; go -- Hany nem vajdasagi szinhaz szerepel a kimutatasunkban select COUNT(SZINHAZ_AZ) from SZINHAZ where SZ_H_VAJDASAGI = 0; go -- Egy-egy varosban (a cim alapjan) hany szinhaz szerepel a kimutatasunkban select SZ_H_CIM_HELYSEG, COUNT(SZINHAZ_AZ) as 'Szinhazak szama' from SZINHAZ group by SZ_H_CIM_HELYSEG; go select COUNT(SZINHAZ_AZ) from SZINHAZ group by SZ_H_CIM_HELYSEG; go -- Listazzuk a vajdasagi, nem amator szinhazak neveit select SZINHAZNEV from SZINHAZ where SZ_H_VAJDASAGI='true' and SZ_H_AMATOR = 'false'; go -- Listazzuk a legkisebb iranyitoszamhoz tartozo szinhazakat (neveit) select SZINHAZNEV from SZINHAZ where SZ_H_CIM_IRANYITOSZAM=(select MIN(SZ_H_CIM_IRANYITOSZAM) from SZINHAZ); go -- Listazzuk a legkisebb iranyitoszamhoz tartozo amator szinhazakat (neveit) select SZINHAZNEV from SZINHAZ where SZ_H_CIM_IRANYITOSZAM=(select MIN(SZ_H_CIM_IRANYITOSZAM) from SZINHAZ) and SZ_H_AMATOR=1; go -- Listazzuk a legkisebb iranyitoszamhoz tartozo amator szinhazakat (neveit) es -- a szabadkai szinhazakat select SZINHAZNEV from SZINHAZ where (SZ_H_CIM_IRANYITOSZAM=(select MIN(SZ_H_CIM_IRANYITOSZAM) from SZINHAZ) and SZ_H_AMATOR=1) or SZ_H_CIM_HELYSEG='Szabadka'; go /* Nyolcadik het - 14h -vege Nyolcadik het - 14h - vege Nyolcadik het - 14h - vege Nyolcadik het - 14h - vege Nyolcadik het - 14h - vege*/ /* Nyolcadik het - 17.30h Nyolcadik het - 17.30h Nyolcadik het - 17.30h Nyolcadik het - 17.30h Nyolcadik het - 17.30h */ use Szinhazportal; go insert SZINHAZ (HELYISEG_AZ,SZINHAZNEV,SZ_H_CIM_IRANYITOSZAM,SZ_H_CIM_HELYSEG,SZ_H_VAJDASAGI,SZ_H_AMATOR) values (1, 'Ujvideki Szinhaz1', 21000, 'Ujvidek', 0, 0); go select * from SZINHAZ; go -- Listazzuk a szinhazak neveit ;s utca-hazszamait select SZINHAZNEV,SZ_H_CIM_UTCA_HSZ from SZINHAZ; go -- Listazzuk a szinhazak neveit es utca-hazszamait -- ahol az utca-hazszam kitoltott ertek select SZINHAZNEV,SZ_H_CIM_UTCA_HSZ from SZINHAZ where SZ_H_CIM_UTCA_HSZ is not null; go -- Hany szinhaz van a nyilvantartasban select COUNT(*) from SZINHAZ; go select COUNT(SZINHAZNEV) from SZINHAZ; go select COUNT(SZ_H_TELEFON) from SZINHAZ; go -- hany szabadkai szinhaz van select COUNT(*) from SZINHAZ where SZ_H_CIM_HELYSEG='SZaBADKA'; go -- hany szabadkai amatorszinhaz van select COUNT(*) from SZINHAZ where SZ_H_CIM_HELYSEG='SZaBADKA' and SZ_H_AMATOR=1; go -- hany ujvideki amatorszinhaz van select COUNT(*) from SZINHAZ where SZ_H_CIM_HELYSEG='Ujvidek' and SZ_H_AMATOR=1; go select * from SZINHAZ; go update SZINHAZ set SZ_H_AMATOR=1 where SZINHAZNEV='Tanyaszinhaz'; go -- listazzuk azon szinhazak neveit, amelyek -- a legkisebb iranyitoszammal rendelkeznek select SZINHAZNEV from SZINHAZ where SZ_H_CIM_IRANYITOSZAM=(select MIN(SZ_H_CIM_IRANYITOSZAM) from SZINHAZ); go /* Nyolcadik het - 17.30h -vege Nyolcadik het - 17.30h -vege Nyolcadik het - 17.30h -vege Nyolcadik het - 17.30h -vege Nyolcadik het - 17.30h -vege */ /* Adatfeltoltesek a Szinhazportal adatbazisba a kilencedik het elott Adatfeltoltesek a Szinhazportal adatbazisba a kilencedik het elott Adatfeltoltesek a Szinhazportal adatbazisba a kilencedik het elott Adatfeltoltesek a Szinhazportal adatbazisba a kilencedik het elott Adatfeltoltesek a Szinhazportal adatbazisba a kilencedik het elott*/ use Szinhazportal go /* Ezek az elozo oran betoltott adatok -kezdet insert ORSZAG values ('Szerbia', 'SRB'); go select * from ORSZAG; go insert HELYISEG values (1, 'Szabadka', 24000); go select * from HELYISEG; go Ezek az elozo oran betoltott adatok -vege */ insert ORSZAG values ('Montenegró', 'MNE'); go select * from ORSZAG; go insert HELYISEG values (4, 'Nikšić', 4700); go select * from HELYISEG; go select * from SZINHAZ; go insert SZINHAZ values (2, 'Srpsko narodno pozorište', 21000, 'Ujvidek', 'Futoški put 2-3', '+381 21 333-4444', 'www.snp.rs', 'info@snp.rs', 'true', 'false'); go insert SZINHAZ values (2, 'Pozorište na Detelinari', 21000, 'Ujvidek', 'Glavni put 3-7', '+381 21 222-6666', 'www.pnd.rs', 'info@pnd.rs', 'true', 'true'); go update SZINHAZ set HELYISEG_AZ=2 where SZ_H_CIM_IRANYITOSZAM=21000; go insert SZINHAZ values (6, 'Madách Színház', 1153, 'Budapest', 'Deák tér 3-7', '+36 1 561-4467', 'www.madachszinhaz.hu', 'info@madachszinhaz.hu', 0, 0); go select * from SZINHAZ; go update SZINHAZ set HELYISEG_AZ=6 where SZ_H_CIM_IRANYITOSZAM=1153; go insert SZINHAZ values (7, 'Szegedi Nemzeti Színház', 2327, 'Szeged', 'Tiszatöltés út 5-7', '+36 62 521-4568', 'www.szegedinemzetiszinhaz.hu', 'info@szegedinemzetiszinhaz.hu', 0, 0); go select COUNT(*) from SZINHAZ; go /* ami meg hatravan az egytablas lekerdezesbol - kezdete --lokalis ideiglenes tabla (csak a job/session szamara elerheto): create #lokalis_ideiglenes_tablanev from ... --globalsi ideiglenes tabla (minden elo/aktiv job/session szamara elerheto): create ##globalis_ideiglenes_tablanev from ... --tabla szerkezetenek es adatainak masolasa uj tablaba: select [mezonevek] | * into uj_tabla_neve from letezo_tabla_neve where ... --csak tabla-szerkezet masolasa uj tablaba: select * into uj_tabla_neve from letezo_tabla_neve where 1=2; -- tabla toltese masik tablabol insert into tabla_neve_amit_toltunk select [mezonevek] | * from tabla_neve_amelybol_toltunk where ... -- osszetett feltetel * select szinhaznev from szinhaz where szinhaznev >= 'J' and szinhaznev <= 'Sz' and SZ_H_AMATOR=0; -- IN select szinhaznev from szinhaz where SZ_H_CIM_HELYSEG IN ('Szabadka', 'Ujvidek', 'Budapest'); -- distinct aggregacio select count (SZ_H_CIM_HELYSEG) as 'hany helyisegben', count(distinct SZ_H_CIM_HELYSEG) as 'hany kulonbozo helyisegben' from szinhaz where ... ; -- operatorok es funkciok -- + operator -- SUBSTRING(mezonev, kezdet, hossz) operator -- UPPER, LOWER operator -- REPLACE() funkcio -- LEN() funkcio -- LTRIM(), RTRIM() funkcio -- CURRENT_TIMESTAMP operator -- SYSTEM_USER, CURRENT_USER -- CAST() funkcio -- CASE szerkezet -- COALESCE() funkcio -- NULLIF() funkcio ami meg hatravan az egytablas lekerdezesbol - vege */ -- Kilencedik talalkozas - kezdet -- Kilencedik talalkozas - kezdet -- Kilencedik talalkozas - kezdet -- Kilencedik talalkozas - kezdet use Szinhazportal; go insert ORSZAG values ('Montenegró', 'MNE'); go select * from ORSZAG; go delete ORSZAG where ORSZAG_AZ=5; go -- Letrehozni egy uj tablat orszag2 neven, es betolteni az orszag -- tabla adatait select * into orszag2 from ORSZAG; go select * from orszag2; go -- Letrehozni egy uj tablatszerkezetet orszag3 neven, az orszag -- tablabol select * into orszag3 from ORSZAG where 5=6; go sp_help orszag3; go select * from orszag3; go -- Listazni a J/tol az Sz betuvel kezdodo szinhazneveket select szinhaznev from szinhaz where szinhaznev >= 'J' and szinhaznev <= 'Sz' and SZ_H_AMATOR=0; go select distinct szinhaznev from szinhaz where szinhaznev >= 'M' and szinhaznev <= 'Sz' and SZ_H_AMATOR=0; go select szinhaznev from szinhaz where szinhaznev >= 'M' and szinhaznev <= 'Sz' and SZ_H_AMATOR=0; go -- Listazni a J/tol az S betuvel kezdodo szinhazneveket, ABC sorrendben use Szinhazportal; go select szinhaznev from szinhaz where szinhaznev >= 'J' and szinhaznev <= 'Sz' order by 1; go select * from SZINHAZ; go -- Listazni a J/tol az Sz betuvel kezdodo szinhazneveket illetve -- az amatorszinhazakat, ABC sorrendben select szinhaznev, SZ_H_AMATOR from szinhaz where (szinhaznev >= 'J' and szinhaznev <= 'S') or SZ_H_AMATOR=1 order by 1; go -- listazni a szabadkai es ujvideki szinhazakat -- (en meg a budapestieket is listazom) select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG IN ('Szabadka', 'Ujvidek', 'Budapest'); go -- listazni a szabadkai select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG IN ('Szabadka'); go select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG='Szabadka'; go -- szamlaljuk meg, hogy hany varost tartalmaz a szinhaz tabla, -- es azt is, hogy hany kulonbozo varosnevunk van select count (SZ_H_CIM_HELYSEG) as 'hany helyisegben', count(distinct SZ_H_CIM_HELYSEG) as 'hany kulonbozo helyisegben' from szinhaz; go select * from SZINHAZ; go -- kiirni a szinhaznevek mellet a varos es utcahazszamot -- egy kotojel elvalasztassal egymastol select SZINHAZNEV+' - '+SZ_H_CIM_HELYSEG+' - '+SZ_H_CIM_UTCA_HSZ as 'Szinhaznevek es cimek' from SZINHAZ; go -- Melyek a telefonszamok elejen (elso 5 jel) a jelek select SUBSTRING(SZ_H_TELEFON, 1,5) from SZINHAZ; go -- Irjuk ki a szinhazneveket csupa nagybetuvel/csupa kisbetuvel select lower(SZINHAZNEV) from SZINHAZ; go --Helyettesitsuk a szinhaznevekben az elso u betut E betuvel select SZINHAZNEV, REPLACE(substring(SZINHAZNEV,1,1), 'U', 'E')+SUBSTRING(SZINHAZNEV,2, LEN(SZINHAZNEV)) from SZINHAZ; go -- Kilencedik talalkozas - vege -- Kilencedik talalkozas - vege -- Kilencedik talalkozas - vege -- Kilencedik talalkozas - vege -- Kilencedik talalkozas -17.30 - 19.00 - kezdet -- Kilencedik talalkozas -17.30 - 19.00 - kezdet -- Kilencedik talalkozas -17.30 - 19.00 - kezdet --lokalis ideiglenes tabla (csak a job/session szamara elerheto): create #lokalis_ideiglenes_tablanev from ... --globalis ideiglenes tabla (minden elo/aktiv job/session szamara elerheto): create ##globalis_ideiglenes_tablanev from ... --tabla szerkezetenek es adatainak masolasa uj tablaba: select [mezonevek] | * into uj_tabla_neve from letezo_tabla_neve where ... --csak tabla-szerkezet masolasa uj tablaba: select * into uj_tabla_neve from letezo_tabla_neve where 1=2; -- tabla toltese masik tablabol insert into tabla_neve_amit_toltunk select [mezonevek] | * from tabla_neve_amelybol_toltunk where ... -- osszetett feltetel * select szinhaznev from szinhaz where szinhaznev >= 'J' and szinhaznev <= 'Sz' and SZ_H_AMATOR=0; -- IN select szinhaznev from szinhaz where SZ_H_CIM_HELYSEG IN ('Szabadka', 'Ujvidek', 'Budapest'); -- distinct aggregacio select count (SZ_H_CIM_HELYSEG) as 'hany helyisegben', count(distinct SZ_H_CIM_HELYSEG) as 'hany kulonbozo helyisegben' from szinhaz where ... ; -- operatorok es funkciok -- + operator -- SUBSTRING(mezonev, kezdet, hossz) operator -- UPPER, LOWER operator -- REPLACE() funkcio -- LEN() funkcio -- LTRIM(), RTRIM() funkcio -- CURRENT_TIMESTAMP operator -- SYSTEM_USER, CURRENT_USER -- CAST() funkcio -- CASE szerkezet -- COALESCE() funkcio -- NULLIF() funkcio --tabla szerkezetenek es adatainak masolasa uj tablaba: /* select [mezonevek] | * into uj_tabla_neve from letezo_tabla_neve where ... */ -- masoljuk at a szinhaz tablat egy szinhaz1 nevu tablaba use Szinhazportal; go drop table dbo.szinhaz2; go select * into szinhaz1 from SZINHAZ; go select * from szinhaz1; go -- masoljuk at a szinhaz tabla strukturajat/felepiteset -- egy szinhaz2 nevu tablaba select * into szinhaz2 from SZINHAZ where 9=12; go select * from szinhaz2; go sp_help szinhaz2; go insert into szinhaz2 select HELYISEG_AZ, SZINHAZNEV,SZ_H_CIM_IRANYITOSZAM,SZ_H_CIM_HELYSEG, SZ_H_CIM_UTCA_HSZ, SZ_H_TELEFON,SZ_H_WWW_CIM, SZ_H_EMAIL, SZ_H_VAJDASAGI, SZ_H_AMATOR from szinhaz; go -- Listazzuk a 'J'tol 'S'ig kezdodo szinhazneveket select szinhaznev from szinhaz where szinhaznev >= 'K' and szinhaznev <= 'T'; go -- Listazzuk a 'K'tol 'Ts'ig kezdodo szinhazneveket, de csak az amator szinhazakat select szinhaznev, SZ_H_AMATOR from szinhaz where szinhaznev >= 'K' and szinhaznev <= 'Ts' and SZ_H_AMATOR=1; go -- Listazzuk a 'K'tol 'S'ig kezdodo szinhazneveket, vagy az amator szinhazakat select szinhaznev, SZ_H_AMATOR from szinhaz where (szinhaznev >= 'K' and szinhaznev <= 'S') or SZ_H_AMATOR=1; go -- Listazzuk a 'A'tol 'L'ig kezdodo szinhazneveket, az amator szinhazakat, -- illetve a szabadka vonzaskorebe tartozo szinhazakat select szinhaznev, SZ_H_AMATOR,SZ_H_CIM_IRANYITOSZAM from szinhaz where (szinhaznev >= 'A' and szinhaznev <= 'L') or SZ_H_AMATOR=1 or SZ_H_CIM_IRANYITOSZAM between 24000 and 24999; go select * from szinhaz; go -- IN hasznalata -- Listazzuk az ujvideki szinhazneveketa helysegnev alapjan, -- az IN operator segitsegevel select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG in ('Ujvidek'); go select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG='Ujvidek'; go select szinhaznev, SZ_H_CIM_HELYSEG from szinhaz where SZ_H_CIM_HELYSEG='UjVidek'or SZ_H_CIM_HELYSEG='SzaBadka'; go -- szamoljuk meg, hogy hany soros a tabla, hany beiras van telefon mezoben, -- es hany kulonbozo ertk talalhato a telefon mezoben select COUNT(*) as 'Sorok szama', COUNT(SZ_H_TELEFON) as 'Kitoltott sorok szama', COUNT(distinct SZ_H_TELEFON) as 'Kulonbozo tartalmu sorok szama' from SZINHAZ; go select * from SZINHAZ; go -- Irjuk ki egy oszlopba a szinhaznevet, helyiseget es cimet -- egy-egy elvalasztojellel elvalasztva select SZINHAZNEV+' - '+ SZ_H_CIM_HELYSEG+' - '+ SZ_H_CIM_UTCA_HSZ as 'Egy oszlopba tomoritve' from SZINHAZ; go -- Irjuk ki a szinhaznevek elso 8 betujet select SUBSTRING(SZINHAZNEV, 2, 8) as 'Nevkezdet' from SZINHAZ; go -- csereljuk ki az 'N' betuvel kezdodo szinhaznevekben a kezdobetut -- 'S' beruvel select SZINHAZNEV, REPLACE(substring(SZINHAZNEV,1,1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, LEN(SZINHAZNEV)) from SZINHAZ; go -- Kilencedik talalkozas -17.30 - 19.00 - vege -- Kilencedik talalkozas -17.30 - 19.00 - vege -- Kilencedik talalkozas -17.30 - 19.00 - vege -- Kilencedik talalkozas -17.30 - 19.00 - vege /* Elokeszulet a tizedik talalkozasra - kezdet Elokeszulet a tizedik talalkozasra - kezdet Elokeszulet a tizedik talalkozasra - kezdet -- REPLACE() funkcio -- LEN() funkcio, DATALENGTH(), COL_LENGTH() -- LTRIM(), RTRIM() funkcio -- CURRENT_TIMESTAMP operator -- SYSTEM_USER, CURRENT_USER -- CAST() funkcio -- CASE szerkezet -- COALESCE() funkcio -- NULLIF() funkcio -- CONVERT() -- GETDATE() -- DATEDIFF() -- DATEPART() -- ISNULL() -- Finally, for adding a default value, the ADD CONSTRAINT syntax is very simple. ADD CONSTRAINT constraint_name DEFAULT default_value FOR column_to_receive_the_value The only part of the preceding syntax that requires further explanation is the default_value area. default_value can be a string, a numeric, NULL, or a system function (for example, GETDATE(), which would insert the current date and time). So the default value does not have to be fixed; it can be dynamic. -- • LTRIM/RTRIM: These perform similar functionality. If you have a string with leading spaces, and you wish to remove those leading spaces, you would use LTRIM so that the returned varchar value would have a nonspace character as its first value. If you have trailing spaces, you would use RTRIM. You can only use this function with a data type of varchar or nvarchar, or a data type that can be implicitly converted to these two data types, or with a data type converted to varchar or nvarchar using the CAST SQL Server function. -- • CAST: This specialized function converts one data type to another data type. I don’t cover this within the book. If you wish to convert data types, check on the command in Books Online, which can be found by selecting Help in Query Editor. -- • LEFT/RIGHT: This function returns the leftmost or rightmost characters from a string. Passing in a second parameter to the function will determine the number of characters to return from whichever side of the string. The LEFT and RIGHT functions accept any data type except text or ntext expressions to perform the string manipulation, implicitly converting any noncharacter data type or varchar or nvarchar, and returning a varchar or nvarchar data type as a result. -- DATEADD() If you want to add or subtract an amount of time to a column or a variable, then display a new value in a rowset or set a variable with that new value, DATEADD() will do this. The syntax for DATEADD() is DATEADD(datepart, number, date) The datepart option applies to all of the date functions and details what you want to add from milliseconds to years. These are defined as reserved words and therefore are not surrounded by quotation marks. There are a number of possible values, as detailed in Table 11-1. Taking the second option of the datepart function, to add the value, make the number positive, and to subtract a number, make it negative. Moving to the final option of the datepart function, this can be either a value, a variable, or a column date type holding the date and time you wish to change. Table 11-1. Potential Values for datepart datepart Definition Meaning isowk, isoww ISOWeek is a numbering system used to give every week in the calendar a unique, ascending number. An ISO week starts on a Monday, and Week 1 is the week containing the first Thursday of that year. For example, in 2008, the first Thursday occurred on January 3, so Week 1 ran from December 31, 2007, through January 6, 2008. tz Timezone offset ns Nanosecond mcs Microsecond ms Millisecond ss, s Second mi, n Minute hh Hour dw, w Weekday wk, ww Week dd, d Day dy, y Day of year mm, n Month qq, q Quarter yy, yyyy Year -- DATEDIFF() To find the difference between two dates, you would use the function DATEDIFF(). The syntax for this function is DATEDIFF(datepart, startdate, enddate) The first option contains the same options as for DATEADD(), and startdate and enddate are the two days you wish to compare. A negative number shows that the enddate is before the startdate. -- DATENAME() Returning the name of the part of the date is great for using with things such as customer statements. Changing the number 6 to the word June makes for more pleasant reading. The syntax is DATENAME(datepart, datetoinspect) We will also see this in action in DATEPART(). Try It Out: DATENAME -- DATEPART() If you wish to achieve returning part of a date from a date variable, column, or value, you can use DATEPART() within a SELECT statement. As you may be expecting by now, the syntax has datepart as the first option, and then the datetoinspect as the second option, which returns the numerical day of the week from the date inspected. DATEPART(datepart, datetoinspect) 1. We need to set only one local variable to a date and time. After that, we find the day of the month. DECLARE @WhatsTheDay datetime SET @WhatsTheDay = '24 March 2008 3:00 PM' SELECT DATEPART(dd, @WhatsTheDay) Figure 11-24 shows the results after executing this code. Figure 11-24. Finding part of a date 2. To produce a more pleasing date and time for a statement, we can combine DATEPART() and DATENAME() to have a meaningful output. The function CAST(), which we will look at in detail shortly, is needed here, as it is a data type conversion function. DECLARE @WhatsTheDay datetime SET @WhatsTheDay = '24 March 2008 3:00 PM' SELECT DATENAME(dw, @WhatsTheDay) + ', ' + CAST(DATEPART(dd,@WhatsTheDay) AS varchar(2)) + ' ' + DATENAME(mm,@WhatsTheDay) + ' ' + CAST(DATEPART(yyyy,@WhatsTheDay) AS char(4)) 3. When this is executed, it will produce the more meaningful date shown in Figure 11-25. Figure 11-25. Finding and concatenating to provide a useful date -- GETDATE()/SYSDATETIME() GETDATE() is a great function for returning the exact date and time from the system. You have seen this in action when setting up a table with a default value, and at a couple of other points in the book. There are no parameters to the syntax. If you need greater accuracy to nanoseconds and further, then use SYSDATETIME(). String This next section will look at some functions that can act on those data types that are characterbased, such as varchar and char. -- LEFT() When it is necessary to return the first n left characters from a string-based variable, you can achieve this through the use of LEFT(n), replacing n with the number of characters you wish to return. -- LOWER() To change alphabetic characters within a string, ensuring that all characters are in lowercase, you can use the LOWER() function. -- LTRIM() There will be times that leading spaces will occur in a string and you’ll want to remove them. LTRIM() will trim these spaces on the left. -- RIGHT() The opposite of LEFT() is, of course, RIGHT(), and this function returns a set of characters from the right-hand side. -- RTRIM() When you have a CHAR() data type, no matter how many characters you enter, the variable will be filled on the right, known as right-padded, with spaces. To remove these, use RTRIM. This changes the data from a fixed-length CHAR() to a variable-length value. -- STR() Some data types have implicit conversions. We will see later how to complete explicit conversions, but a simple conversion that will take any numeric value and convert it to a variable-length string is STR(), which we look at next. -- SUBSTRING() As you have seen, you can take a number of characters from the left and from the right of a string. To retrieve a number of characters that do not start with the first or last character, you need to use the function SUBSTRING(). This has three parameters: the variable or column, which character to start the retrieval from, and the number of characters to return. -- System Functions System functions are functions that provide extra functionality outside of the boundaries that can be defined as string, numeric, or date related. Three of these functions will be used extensively throughout our code, and therefore you should pay special attention to CASE, CAST, and ISNULL. CASE WHEN. . .THEN. . .ELSE. . .END The first function is when we wish to test a condition. WHEN that condition is true THEN we can do further processing, ELSE if it is false, then we can do something else. What happens in the WHEN section and the THEN section can range from another CASE statement to providing a value that sets a column or a variable. The CASE WHEN statement can be used to return a value or, if on the right-hand side of an equality statement, to set a value. Both of these scenarios are covered in the following examples. -- CAST()/CONVERT() These are two functions used to convert from one data type to another. The main difference between them is that CAST() is ANSI SQL–92 compliant, but CONVERT() has more functionality. The syntax for CAST() is CAST(variable_or_column AS datatype) This is opposed to the syntax for CONVERT(), which is CONVERT(datatype,variable_or_column) Not all data types can be converted between each other, such as converting a datetime to a text data type, and some conversions need neither a CAST() nor a CONVERT(). There is a grid in Books Online that provides the necessary information. If you wish to CAST() from numeric to decimal or vice versa, then you need to use CAST(); otherwise, you will lose precision. -- ISDATE() Although ISDATE() is a function that works with dates and times, this system function takes a value in a column or a variable and confirms whether it contains a valid date or time. The value returned is 0, or false, for an invalid date, or 1 for true if the date is okay. The formatting of the date for testing within the ISDATE() function has to be in the same regional format as you have set with SET DATEFORMAT or SET LANGUAGE. If you are testing in a European format but have your database set to US format, then you will get a false value returned. -- 1. The first example demonstrates where a date is invalid. There are only 30 days in September. DECLARE @IsDate char(15) SET @IsDate = '31 Sep 2008' SELECT ISDATE(@IsDate) - FALSE -- ISNULL() Many times so far, you have seen NULL values within a column of returned data. As a value, NULL is very useful, as you have seen. However, you may wish to test whether a column contains a NULL or not. If there were a value, you would retain it, but if there were a NULL, you would convert it to a value. This function could be used to cover a NULL value in an aggregation, for example. The syntax is ISNULL(value_to_test,new_value) where the first parameter is the column or variable to test if there is a NULL value, and the second option defines what to change the value to if there is a NULL value. This change only occurs in the results and doesn’t change the underlying data that the value came from. -- ISNUMERIC() This final system function tests the value within a column or variable and ascertains whether it is numeric or not. The value returned is 0, or false, for an invalid number, or 1 for true if the test is okay and can convert to a numeric. -- Elokeszulet a tizedik talalkozasra - vege Elokeszulet a tizedik talalkozasra - vege Elokeszulet a tizedik talalkozasra - vege */ -- Peldak use Szinhazportal; go select * from SZINHAZ; go -- csereljuk ki az 'N' betuvel kezdodo szinhaznevekben a kezdobetut -- 'S' beruvel select SZINHAZNEV, REPLACE(substring(SZINHAZNEV,1,1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, LEN(SZINHAZNEV)) from SZINHAZ; go select SZINHAZNEV, REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, LEN(SZINHAZNEV)) from SZINHAZ; go select SZINHAZNEV, REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, datalength(SZINHAZNEV)) as 'N-S csere a szinhaznevek elejen' from SZINHAZ; go select SZINHAZNEV, REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, col_length('SZINHAZ', 'SZINHAZNEV')) as 'N-S-1 csere a szinhaznevek elejen' from SZINHAZ; go use Szinhazportal; go -- LEN() funkcio, DATALENGTH(), COL_LENGTH() -- LTRIM(), RTRIM() funkcio select SZINHAZNEV + REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, col_length('SZINHAZ', 'SZINHAZNEV')) as 'Siman', ltrim(SZINHAZNEV) + REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, col_length('SZINHAZ', 'SZINHAZNEV')) as 'ltrim(SZINHAZ) - zal', rtrim(SZINHAZNEV) + REPLACE(left(SZINHAZNEV, 1), 'N', 'S')+ SUBSTRING(SZINHAZNEV, 2, col_length('SZINHAZ', 'SZINHAZNEV')) as 'rtrim(SZINHAZ) - zal' from SZINHAZ; go -- varchar eseten nincs jelentosege -- varchar eseten nincs jelentosege -- varchar eseten nincs jelentosege -- CURRENT_TIMESTAMP (CURRENT_DATE, CURRENT_TIME, and CURRENT_TIMESTAMP)operator --??? SELECT substring(cast(CURRENT_TIMESTAMP as character), 1, 11) AS "Date", substring(cast(CURRENT_TIMESTAMP as character), 12,8) AS "Time", CURRENT_TIMESTAMP AS "Timestamp"; go --??? -- GETDATE()/SYSDATETIME() SELECT substring(cast(GETDATE() as character), 1, 11) AS "Date", substring(cast(GETDATE() as character), 12,8) AS "Time", GETDATE() AS "GetDate"; go SELECT substring(cast(Sysdatetime() as character), 1, 11) AS "Date", substring(cast(Sysdatetime() as character), 12,8) AS "Time", Sysdatetime() AS "Sysdatetime"; go ---------------------------------------------------------------------------------------------------------- SELECT substring(cast(CURRENT_TIMESTAMP as character), 1, 11) AS "Date", substring(cast(CURRENT_TIMESTAMP as character), 12,8) AS "Time", CURRENT_TIMESTAMP AS "Timestamp", substring(cast(GETDATE() as character), 1, 11) AS "Date", substring(cast(GETDATE() as character), 12,8) AS "Time", GETDATE() AS "GetDate", substring(cast(Sysdatetime() as character), 1, 11) AS "Date", substring(cast(Sysdatetime() as character), 12,8) AS "Time", Sysdatetime() AS "Sysdatetime"; go ---------------------------------------------------------------------------------------------------------- -- SYSTEM_USER, CURRENT_USER SELECT CURRENT_USER AS "User"; go SELECT SYSTEM_USER AS "User"; go -- CAST() funkcio -- CAST(variable_or_column AS datatype) -- This is opposed to the syntax for CONVERT(), which is -- CONVERT(datatype,variable_or_column) -- CASE szerkezet /* SELECT title_id, type, price, CASE type WHEN 'history' THEN price * 1.10 WHEN 'psychology' THEN price * 1.20 ELSE price END AS "New price" FROM titles ORDER BY type ASC, title_id ASC; */ use Szinhazportal; go -- Ketszerezzuk meg a vajdasagi szinhazak iranyitoszamat! select SZINHAZNEV, SZ_H_CIM_HELYSEG,SZ_H_CIM_IRANYITOSZAM, case SZ_H_VAJDASAGI when 1 then SZ_H_CIM_IRANYITOSZAM * 2 else SZ_H_CIM_IRANYITOSZAM end as 'Vajdasagiaknak ketszeres az iranyitoszamuk' from SZINHAZ; go select SZINHAZNEV, SZ_H_VAJDASAGI from dbo.SZINHAZ where SZINHAZNEV='Ujvideki Szinhaz1'; go /* select SZINHAZNEV, SZ_H_CIM_HELYSEG,SZ_H_CIM_IRANYITOSZAM, case (SZ_H_VAJDASAGI and SZ_H_AMATOR) when (1 and 1) then SZ_H_CIM_IRANYITOSZAM * 4 when (1 and 0) then SZ_H_CIM_IRANYITOSZAM * 2 when (0 and 1) then SZ_H_CIM_IRANYITOSZAM * 2 else SZ_H_CIM_IRANYITOSZAM end as 'Vajdasagiaknak ketszeres az iranyitoszamuk' from SZINHAZ; go osszetett feltetel nem mukodik */ select SZINHAZNEV, SZ_H_CIM_HELYSEG,SZ_H_CIM_IRANYITOSZAM, case SZ_H_VAJDASAGI when 1 then SZ_H_CIM_IRANYITOSZAM * 2 else SZ_H_CIM_IRANYITOSZAM end as 'Vajdasagiaknak ketszeres az iranyitoszamuk', case SZ_H_AMATOR when 1 then SZ_H_CIM_IRANYITOSZAM * 2 else SZ_H_CIM_IRANYITOSZAM end as 'Amatorszinhazaknak ketszeres az iranyitoszamuk' from SZINHAZ; go -- CONVERT() -- CAST(variable_or_column AS datatype) -- This is opposed to the syntax for CONVERT(), which is -- CONVERT(datatype,variable_or_column) -- DATEADD() /* If you want to add or subtract an amount of time to a column or a variable, then display a new value in a rowset or set a variable with that new value, DATEADD() will do this. The syntax for DATEADD() is DATEADD(datepart, number, date) The datepart option applies to all of the date functions and details what you want to add from milliseconds to years. These are defined as reserved words and therefore are not surrounded by quotation marks. There are a number of possible values, as detailed in Table 11-1. Taking the second option of the datepart function, to add the value, make the number positive, and to subtract a number, make it negative. Moving to the final option of the datepart function, this can be either a value, a variable, or a column date type holding the date and time you wish to change. Table 11-1. Potential Values for datepart datepart Definition Meaning isowk, isoww ISOWeek is a numbering system used to give every week in the calendar a unique, ascending number. An ISO week starts on a Monday, and Week 1 is the week containing the first Thursday of that year. For example, in 2008, the first Thursday occurred on January 3, so Week 1 ran from December 31, 2007, through January 6, 2008. tz Timezone offset ns Nanosecond mcs Microsecond ms Millisecond ss, s Second mi, n Minute hh Hour dw, w Weekday wk, ww Week dd, d Day dy, y Day of year mm, n Month qq, q Quarter yy, yyyy Year */ -- Az idobelyeg 50 ora mulva select GETDATE(), DATEADD(hh, 50, getdate()) as 'Az idobelyeg 50 ora mulva'; go -- Mi volt az idobelyeg 50 oraval ezelott select GETDATE() as 'A pillanatnyi idobelyeg', DATEADD(hh, -50, getdate()) as 'Az idobelyeg 50 oraval ezelott'; go -- Az idobelyeg 50 het mulva select GETDATE(), DATEADD(WW, 50, getdate()) as 'Az idobelyeg 50 het mulva'; go -- Az idobelyeg 50 nap mulva select GETDATE(), DATEADD(DW, 50, getdate()) as 'Az idobelyeg 50 nap mulva'; go -- Az idobelyeg 50 nap mulva select GETDATE(), DATEADD(DD, 50, getdate()) as 'Az idobelyeg 50 nap mulva'; go -- Az idobelyeg 50 honap mulva select GETDATE(), DATEADD(MM, 50, getdate()) as 'Az idobelyeg 50 honap mulva'; go -- Az idobelyeg 50 negyedev mulva select GETDATE(), DATEADD(QQ, 50, getdate()) as 'Az idobelyeg 50 negyedev mulva'; go -- Az idobelyeg 50 ev mulva select GETDATE(), DATEADD(YYYY, 50, getdate()) as 'Az idobelyeg 50 ev mulva'; go -- Feihly-446 -- DATEDIFF() /* To find the difference between two dates, you would use the function DATEDIFF(). The syntax for this function is DATEDIFF(datepart, startdate, enddate) The first option contains the same options as for DATEADD(), and startdate and enddate are the two days you wish to compare. A negative number shows that the enddate is before the startdate. */ -- Az idobelyeg 50 nap mulva, a kulonbseg hetekben select GETDATE() as 'A pillanatnyi idobelyeg', DATEADD(DD, 50, getdate()) as 'Az idobelyeg 50 nap mulva', DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as 'A kulonbseg hetekben'; go select GETDATE() as 'A pillanatnyi idobelyeg', DATEADD(DD, 50, getdate()) as 'Az idobelyeg 50 nap mulva', CAST(DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as Numeric (5,2)) as 'A kulonbseg hetekben'; go -- DATEPART(), DATENAME() /* -- DATEPART() If you wish to achieve returning part of a date from a date variable, column, or value, you can use DATEPART() within a SELECT statement. As you may be expecting by now, the syntax has datepart as the first option, and then the datetoinspect as the second option, which returns the numerical day of the week from the date inspected. DATEPART(datepart, datetoinspect) 1. We need to set only one local variable to a date and time. After that, we find the day of the month. DECLARE @WhatsTheDay datetime SET @WhatsTheDay = '24 March 2008 3:00 PM' SELECT DATEPART(dd, @WhatsTheDay) Figure 11-24 shows the results after executing this code. Figure 11-24. Finding part of a date 2. To produce a more pleasing date and time for a statement, we can combine DATEPART() and DATENAME() to have a meaningful output. The function CAST(), which we will look at in detail shortly, is needed here, as it is a data type conversion function. DECLARE @WhatsTheDay datetime SET @WhatsTheDay = '24 March 2008 3:00 PM' SELECT DATENAME(dw, @WhatsTheDay) + ', ' + CAST(DATEPART(dd,@WhatsTheDay) AS varchar(2)) + ' ' + DATENAME(mm,@WhatsTheDay) + ' ' + CAST(DATEPART(yyyy,@WhatsTheDay) AS char(4)) 3. When this is executed, it will produce the more meaningful date shown in Figure 11-25. Figure 11-25. Finding and concatenating to provide a useful date */ select GETDATE() as 'A pillanatnyi idobelyeg', datepart(DW, GETDATE()) as 'A het hanyadik napja', DATENAME(dw, GETDATE()) as 'A het napjanak a neve', DATEADD(DD, 50, getdate()) as 'Az idobelyeg 50 nap mulva', datepart(DW, DATEADD(DD, 50, getdate())) as 'A het hanyadik napja az 50 napos novelessel', DATENAME(dw, DATEADD(DD, 50, getdate())) as 'A het napjanak a neve az 50 napos novelessel', DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as 'A kulonbseg hetekben'; go select GETDATE() as 'A pillanatnyi idobelyeg', datepart(DY, GETDATE()) as 'Az ev hanyadik napja', DATENAME(DY, GETDATE()) as 'Az ev napjanak a neve', DATEADD(DD, 50, getdate()) as 'Az idobelyeg 50 nap mulva', datepart(DY, DATEADD(DD, 50, getdate())) as 'A het hanyadik napja az 50 napos novelessel', DATENAME(DY, DATEADD(DD, 50, getdate())) as 'A het napjanak a neve az 50 napos novelessel', DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as 'A kulonbseg hetekben'; go /* -- ISDATE() Although ISDATE() is a function that works with dates and times, this system function takes a value in a column or a variable and confirms whether it contains a valid date or time. The value returned is 0, or false, for an invalid date, or 1 for true if the date is okay. The formatting of the date for testing within the ISDATE() function has to be in the same regional format as you have set with SET DATEFORMAT or SET LANGUAGE. If you are testing in a European format but have your database set to US format, then you will get a false value returned. -- 1. The first example demonstrates where a date is invalid. There are only 30 days in September. DECLARE @IsDate char(15) SET @IsDate = '31 Sep 2008' SELECT ISDATE(@IsDate) - FALSE */ -- Datumertek ellenorzese select ISDATE('2001-02-29') go select ISDATE(GETDATE()) go -- ISNULL() /* -- ISNULL() Many times so far, you have seen NULL values within a column of returned data. As a value, NULL is very useful, as you have seen. However, you may wish to test whether a column contains a NULL or not. If there were a value, you would retain it, but if there were a NULL, you would convert it to a value. This function could be used to cover a NULL value in an aggregation, for example. The syntax is ISNULL(value_to_test,new_value) where the first parameter is the column or variable to test if there is a NULL value, and the second option defines what to change the value to if there is a NULL value. This change only occurs in the results and doesn’t change the underlying data that the value came from. */ use Szinhazportal; go select * from SZINHAZ; go select SZINHAZNEV, SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG,SZ_H_CIM_UTCA_HSZ, ISNULL (SZ_H_CIM_UTCA_HSZ, 'N.A.') as 'ISNULL alkalmazasaval' from SZINHAZ; go /* SZINHAZNEV SZ_H_CIM_IRANYITOSZAM SZ_H_CIM_HELYSEG (No column name) Nepszinhaz Szbadka 24000 Szabadka Szabadsag ter 1 Kosztolanyi Dezso Szinhaz Szbadka 24000 Szabadka Fasizmus Aldozatainak Tere 5 Tanyaszinhaz 21000 Ujvidek Futaki ut 2 Ujvideki Szinhaz 21000 Ujvidek Jovana Subotica utca 2-3 Ujvideki Szinhaz1 21000 Ujvidek N.A. Ujvideki Szinhaz1 21000 Ujvidek N.A. Srpsko narodno pozorište 21000 Ujvidek Futoški put 2-3 Pozorište na Detelinari 21000 Ujvidek Glavni put 3-7 */ -- ISNUMERIC() /* This final system function tests the value within a column or variable and ascertains whether it is numeric or not. The value returned is 0, or false, for an invalid number, or 1 for true if the test is okay and can convert to a numeric. */ select SZINHAZNEV, SZ_H_CIM_HELYSEG, ISNULL (SZ_H_CIM_UTCA_HSZ, 'N.A.'), SZ_H_TELEFON,ISNUMERIC(SZ_H_TELEFON) -- case @t = ISNUMERIC(SZ_H_TELEFON) -- when @t=1 then CAST(SZ_H_TELEFON AS integer) -- else SZ_H_TELEFON -- end as 'Atalakitott telefonszam' from SZINHAZ; go -- Tobbtablas lekerdezesek -- Tobbtablas lekerdezesek -- Tobbtablas lekerdezesek -- Tobbtablas lekerdezesek --Descartes-szorzat (keresztszorzat)/ cross join select COUNT(*) from ORSZAG; go select COUNT(*) from HELYISEG; go select * from ORSZAG, HELYISEG; go select * from ORSZAG cross join HELYISEG; go --feltetelhez kotott/szurt (where) Descartes-szorzat (keresztszorzat) -- inner join ... on... -- Listazzuk az orszagokat es a hozzajuk tartozo telepuleseket select * from ORSZAG o, HELYISEG h where o.ORSZAG_AZ=h.ORSZAG_AZ; go select * from ORSZAG o inner join HELYISEG h on h.ORSZAG_AZ=o.ORSZAG_AZ; go -- a natural join-t nem tamogatja az MSSQLSERVER select * from ORSZAG o natural join HELYISEG h on ORSZAG_AZ; go -- a natural join-t nem tamogatja az MSSQLSERVER -- a natural join-t nem tamogatja az MSSQLSERVER -- helyette: -- Listazzuk az orszagokat es a hozzajuk tartozo telepuleseket - de az orszagkod -- csak egyszer jelenjen meg select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o, HELYISEG h where o.ORSZAG_AZ=h.ORSZAG_AZ; go select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o inner join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ; go -- helyette-vege: -- ertelmetlen lekerdezesek: select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, h.ORSZAG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o, HELYISEG h where o.ORSZAG_AZ>h.ORSZAG_AZ; go select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o inner join HELYISEG h on o.ORSZAG_AZ>h.ORSZAG_AZ; go select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o, HELYISEG h where o.ORSZAG_AZ<>h.ORSZAG_AZ; go select o.ORSZAG_AZ, ORSZAGNEV, ORSZAG_JELZES, HELYISEG_AZ, HELYISEGNEV, H_IRANYITOSZAM from ORSZAG o inner join HELYISEG h on o.ORSZAG_AZ<>h.ORSZAG_AZ; go -- ertelmetlen lekerdezesek - vege: -- A 17:25 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- A 17:25 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- A 17:25 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- left outer join -- Listazzuk az orszagokat es a hozzajuk tartozo helyisegeket -- ha az orszaghoz nem kotodik helyiseg, a helyisegadatok nullok lesznek use Szinhazportal; go select * from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ; go use Szinhazportal; go -- A 14:00 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- A 14:00 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- A 14:00 orai csoport anyaganak vege - 10/ik talalkozas-2014-12-04 -- A 14:00 orai csoport anyaganak kezdete - 11/ik talalkozas-2014-12-11 -- A 14:00 orai csoport anyaganak kezdete - 11/ik talalkozas-2014-12-11 -- A 14:00 orai csoport anyaganak kezdete - 11/ik talalkozas-2014-12-11 -- Listazzuk az orszagokat, amelyekhez tartoznak helyisegek es -- a hozzajuk tartozo helyisegeket select * from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is not null; go -- Listazzuk azokat az orszagokat, amelyekhez nem tartoznak helyisegek select * from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is null; go -- Mely kulonbozo nevu oszagokhoz nem kotheto helyiseg select distinct ORSZAGNEV from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is null; go -- Hany orszaghoz nem kotheto helyisegnev select count(o.ORSZAG_AZ) from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is null; go -- Hany kulonbozo nevu orszaghoz nem kotheto helyisegnev select count(distinct o.ORSZAGNEV) from ORSZAG o left outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is null; go use Szinhazportal; go -- Listazzuk a helyisegeket es a hozzajuk tartozo szinhazakat -- ha a helyiseghez nem tartozik szinhaz, a szinhazadatok nullok lesznek select * from HELYISEG h left outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV; go -- Listazzuk a helyisegeket, amelyekhez tartoznak szinhazak es a hozzajuk tartozo szinhazakat select * from HELYISEG h left outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV where sz.SZ_H_CIM_HELYSEG is not null; go -- Listazzuk azokat a helyisegeket, amelyekhez nem tartoznak szinhazak select * from HELYISEG h left outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV where sz.SZ_H_CIM_HELYSEG is null; go -- right outer join -- listazzuk a helyisegeket es az orszagot, amelyhez tartoznak select * from ORSZAG o right outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ; go select * from ORSZAG o right outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where h.ORSZAG_AZ is not null; go select * from ORSZAG o right outer join HELYISEG h on o.ORSZAG_AZ=h.ORSZAG_AZ where o.ORSZAG_AZ is null; go -- Listazzuk a szinhazakat es a hozzajuk tartozo helyisegeket -- ha a szinhazakhoz nem tartozik helyiseg, a helyisegadatok nullok lesznek select * from HELYISEG h right outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV; go -- Listazzuk a szinhazakat, amelyekhez tartoznak helyisegek es a hozzajuk tartozo helyisegeket select * from HELYISEG h right outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV where h.HELYISEGNEV is not null; go -- Listazzuk azokat a szinhazakat, amelyekhez nem tartoznak helyisegek select * from HELYISEG h right outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV where h.HELYISEGNEV is null; go -- full outer join -- full outer join -- Listazzuk a szinhazakat es a helyisegeket -- a hianyzo adatok nullok lesznek select * from HELYISEG h full outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV; go use Szinhazportal; go -- listazzuk azokat a helyisegeket, amelyekhez nem kotodik szinhaz es azokat a -- szinhazakat, amelyekhez nem kotheto helyisegnev select * from HELYISEG h full outer join SZINHAZ sz on sz.SZ_H_CIM_HELYSEG=h.HELYISEGNEV where sz.SZ_H_CIM_HELYSEG is null or h.HELYISEGNEV is null; go select * from ORSZAG; go select * from dbo.HELYISEG; go select * from SZINHAZ; go -- Belso SELCT-ek (Al-SELECT-ek) -- Belso SELCT-ek (Al-SELECT-ek) -- Belso SELCT-ek (Al-SELECT-ek) -- A belso select egy erteket ad vissza -- Unutrašnji SELECT vraća jednu vrednost -- Belso select a where-ben -- Listazzuk a legnagyobb iranyitoszammal rendelkezo helyiseg szinhazneveit -- csak a szinhaz tablat figyelve select SZINHAZNEV, SZ_H_CIM_HELYSEG, SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ where SZ_H_CIM_IRANYITOSZAM = (select MAX(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- Listazzuk a helyiseg tablaban elhelyezkedo legnagyobb iranyitoszamhoz -- tartozo helyisegek szinhazneveit select SZINHAZNEV, SZ_H_CIM_HELYSEG, SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ where SZ_H_CIM_IRANYITOSZAM = (select MAX(H_IRANYITOSZAM) from dbo.HELYISEG); go select MAX(H_IRANYITOSZAM) from dbo.HELYISEG; go select * from dbo.SZINHAZ order by SZ_H_CIM_IRANYITOSZAM desc; go -- Szamlaljuk meg, hogy hany szinhaz van -- a legnagyobb iranyitoszammal rendelkezo helyisegben select count(SZINHAZNEV) from dbo.SZINHAZ where SZ_H_CIM_IRANYITOSZAM = (select MAX(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- Szamlaljuk meg, hogy hany kulonbozo szinhaznev van nyilvantartva -- a legnagyobb iranyitoszammal rendelkezo helyisegben select count(distinct SZINHAZNEV) from dbo.SZINHAZ where SZ_H_CIM_IRANYITOSZAM = (select MAX(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- -- Listazzuk a legkisebb iranyitoszamu helyiseget ( H_IRANYITOSZAM, HELYISEGNEV) -- a helyiseg tablabol es az ebben a helyisegben mukodo szinhazak neveit (ha vannak) -- a szinhaz tablabol select h.H_IRANYITOSZAM iranyitoszam, h.HELYISEGNEV, sz.SZINHAZNEV from dbo.HELYISEG h left outer join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM where h.H_IRANYITOSZAM = (select MIN(h.H_IRANYITOSZAM) from dbo.HELYISEG); go -- huuha, ez nem akar igy menni - DE MIERT????!!! -- Persze, persze, hiszen a belso SELECT-ben a h.H_IRANYITOSZAM-ra hivatkozom, ami erthetetlen, -- a h rovid nev meg nem letezik!!! No, akkor oldjuk fol az ellentmondast: select h.H_IRANYITOSZAM iranyitoszam, h.HELYISEGNEV, sz.SZINHAZNEV from dbo.HELYISEG h left outer join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM where h.H_IRANYITOSZAM = (select MIN(H_IRANYITOSZAM) from dbo.HELYISEG); go select * from dbo.SZINHAZ; go -- IGEN, igy mar rendben van...!!! select MIN(H_IRANYITOSZAM) from dbo.HELYISEG; go select * from dbo.HELYISEG; go select * from dbo.SZINHAZ; go -- Picit belegondolva, folosleges bonyolitani a dolgot a kelletenel! -- A kovetkezo megoldas tunik a legegyszerubbnek !!! -- Persze ez nem irja ki a legkisebb iranyitoszamu helyiseget ( H_IRANYITOSZAM, HELYISEGNEV) -- a helyiseg tablabol, hanem csak a bene mukodo szinhazak neveit (ha vannak) a szinhaz tablabol select SZ_H_CIM_HELYSEG, SZINHAZNEV from dbo.SZINHAZ where SZ_H_CIM_IRANYITOSZAM=(select MIN(H_IRANYITOSZAM) from dbo.HELYISEG); go -- Es persze mukodik is!!! -- na es a kovetkezo vajon menni fog-e??? select h.H_IRANYITOSZAM iranyitoszam, h.HELYISEGNEV helyisegnev, sz.SZINHAZNEV szinhaznev into #temp1 from dbo.HELYISEG h left outer join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM; go /* select * from #temp1; go */ select iranyitoszam, helyisegnev, szinhaznev from #temp1 where iranyitoszam=(select MIN(iranyitoszam) from #temp1); go -- igen,megy, es a ket megoldas ugyanazt az eredmenyt adja!!!!!!! drop table #temp1 -- A belso select TOBB TOBB TOBB erteket ad vissza -- Unutrašnji SELECT vraća VISE vrednosti -- IN, ANY, ALL, EXIST -- Belso select a WHERE-ben use Szinhazportal; go -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknek iranyitoszamai szerepelnek a dbo.SZINHAZ tablaban is -- IN select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM IN (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknek iranyitoszamai szerepelnek a dbo.SZINHAZ tablaban is -- ANY select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM = ANY (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat ISMETLODES NELKUL a dbo.HELYISEG tablabol -- amelyeknek iranyitoszamai szerepelnek a dbo.SZINHAZ tablaban is -- IN select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM IN (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat ISMETLODES NELKUL a dbo.HELYISEG tablabol -- amelyeknek iranyitoszamai szerepelnek a dbo.SZINHAZ tablaban is -- ANY select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM = ANY (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknel az iranyitoszamok kisebbek a legkisebb, dbo.SZINHAZ tablaban szereplo/elofordulo airanyitoszamnal -- ANY -- ha csak tisztan ANY a szures, az nem jo, mert szinte minden belekerul az E-tablaba -- (ha barmelyiktol, akkor akar a legnagyobbtol is lehet kisebb) select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM < ANY (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- ez a kovetkezo mar jo eredmenyt ad, de akkor meg mi ertelme az ANY-nak, hiszen az egyszeru < je li megteszi -- lasd a kovetkezo lekerdezest (a belso select igy mindenkeppen egy erteket ad vissza)! select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM < ANY (select min(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- itt a lekerdezes ANY nelkul select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM < (select min(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknel az iranyitoszamok kisebbek a legkisebb, dbo.SZINHAZ tablaban szereplo/elofordulo airanyitoszamnal -- ALL select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM < ALL (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go ---------------------------------------------------------------------------------------------------------- -- egy valami ami nem ugyanaz, ami az elozo, csak hasonlo: -- a legkisebb iranyitoszam azok kozul a helyisegek kozul, amelyekben nincs nyilvantartott szinhaz select MIN(h.H_IRANYITOSZAM) from dbo.HELYISEG h left join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM where sz.SZINHAZNEV is null; go ----------------------------------------------------------------------------------------------------------- -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknek az iranyitoszamaik nagyobbak a legnagyobb, dbo.SZINHAZ tablaban szereplo/elofordulo airanyitoszamnal -- ANY -- az egyszeru ANY nem adhat jo eredmenyt select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM > ANY (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go -- ha meg mar max-ot kresunk a alselect-ben, akkor meg mar megfelel az egyszeru > osszehasonlitas -- lasd a kovetkezo lekerdezest! select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM > ANY (select max(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- ime az egyszeru osszahasonlitas alkalmazo kulso select: select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM > (select max(SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- a kisebb a legkisebbtol es nagyobb a legnagyobbtol tipusu szuresekre az ALL predikatum valo -- Listazzuk azokat a HELYISEGNEV-eket es H_IRANYITOSZAM-okat a dbo.HELYISEG tablabol -- amelyeknek az iranyitoszamaik nagyobbak a legnagyobb, dbo.SZINHAZ tablaban szereplo/elofordulo airanyitoszamnal -- ALL select HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG where H_IRANYITOSZAM > ALL (select SZ_H_CIM_IRANYITOSZAM from dbo.SZINHAZ); go ---------------------------------------------------------------------------------------------------- -- A 14:00 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 -- A 14:00 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 -- A 14:00 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- A 17:25 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 -- A 17:25 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 -- A 17:25 orai csoport anyaganak vege - 11/ik talalkozas-2014-12-11 ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- A 14:00 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 -- A 14:00 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 -- A 14:00 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- A 17:25 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 -- A 17:25 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 -- A 17:25 orai csoport anyaganak kezdete - 12/ik talalkozas-2014-12-18 ---------------------------------------------------------------------------------------------------- use Szinhazportal; go select * from dbo.TEREM; go -- Listazzuk a szinhaz- es helyisegneveket a szinhaz tablabol ha akar egy terem is definialt -- a terem tablaban -- EXIST select SZINHAZNEV, SZ_H_CIM_HELYSEG from dbo.SZINHAZ where EXISTS (select terem_neve from dbo.TEREM); go -- Listazzuk a szinhaz- es helyisegneveket a szinhaz tablabol ha egyetlen terem sincs definialva -- a terem tablaban -- EXIST select SZINHAZNEV, SZ_H_CIM_HELYSEG from dbo.SZINHAZ where not EXISTS (select terem_neve from dbo.TEREM); go -- Listazzuk azokat a helyisegeket es iranyitoszamaikat (ismetlodesmentesen), -- amelyekben van szinhaz a nyilvantartasban -- EXIST -- kontrollvaltasos megoldas: a belso select annyiszor hajtodik vegre -- ahanyszor a kulso select soraban megvaltozik a H_IRANYITOSZAM erteke select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h where exists (select SZINHAZNEV from dbo.SZINHAZ sz where sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM); go -- Listazzuk azokat a helyisegeket es iranyitoszamaikat (ismetlodesmentesen), -- amelyekben van szinhaz a nyilvantartasban -- exists nelkuli megoldas - outer join select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h left join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM where SZINHAZNEV is not null; go -- Listazzuk azokat a helyisegeket es iranyitoszamaikat (ismetlodesmentesen), -- amelyekben van szinhaz a nyilvantartasban -- exists nelkuli megoldas - Descartes select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h, dbo.SZINHAZ sz where sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM; go -- Listazzuk azokat a helyisegeket es iranyitoszamaikat (ismetlodesmentesen), -- amelyekben van szinhaz a nyilvantartasban -- exists nelkuli megoldas - inner join select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h inner join dbo.SZINHAZ sz on sz.SZ_H_CIM_IRANYITOSZAM=h.H_IRANYITOSZAM; go -- ugyanaz a feladat/megoldas, csak a tablak/kontrollvaltas kotese -- a kulcs-kulso kulcs egyenlosegen alapul select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h where exists (select SZINHAZNEV from dbo.SZINHAZ sz where sz.HELYISEG_AZ=h.HELYISEG_AZ); go -- exists nelkuli megoldas select distinct HELYISEGNEV, H_IRANYITOSZAM from dbo.HELYISEG h left join dbo.SZINHAZ sz on sz.HELYISEG_AZ=h.HELYISEG_AZ where SZINHAZNEV is not null; go -- Atlagosan hany szinhaz van a nyilvantartasban helyisegenkent (8+21+4+4=37/4=9 kerekitve)? -- alselect a from-ban select AVG(szinhazak_szama_helyisegenkent) from (select COUNT(SZINHAZ_AZ) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ) as sz_sz_helyisegenkent; go select AVG(szinhazak_szama_helyisegenkent) from (select COUNT(SZINHAZ_AZ) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ) as q; go -- az alselect a fromban onmagaban veve: hany szinhaz van helyisegenkent (8+21+4+4=37) select COUNT(SZINHAZ_AZ) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ; go select HELYISEG_AZ, SZINHAZ_AZ, SZINHAZNEV from dbo.SZINHAZ order by HELYISEG_AZ; go select AVG(szinhazak_szama_helyisegenkent) from (select cast(COUNT(SZINHAZ_AZ) as numeric(5,2)) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ) as a; go select CAST(AVG(szinhazak_szama_helyisegenkent) as numeric(5,2)) as atlagszinhazszam from (select COUNT(SZINHAZ_AZ) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ) as sz_sz_helyisegenkent; go select COUNT(SZINHAZ_AZ) as szinhazak_szama_helyisegenkent from dbo.SZINHAZ group by HELYISEG_AZ; go /* USE AdventureWorks2008R2 ; GO SELECT RTRIM(p.FirstName) + ' ' + LTRIM(p.LastName) AS Name, d.City FROM Person.Person AS p INNER JOIN HumanResources.Employee e ON p.BusinessEntityID = e.BusinessEntityID INNER JOIN (SELECT bea.BusinessEntityID, a.City FROM Person.Address AS a INNER JOIN Person.BusinessEntityAddress AS bea ON a.AddressID = bea.AddressID) AS d ON p.BusinessEntityID = d.BusinessEntityID ORDER BY p.LastName, p.FirstName; */ -- A belso select egy erteket ad vissza -- Unutrašnji SELECT vraća jednu vrednost -- Belso select a having-ben -- Szamlaljuk meg, hogy hany szinhaz van helyisegenkent a nyilvantartasban -- es csak a legnagyobb iranyitoszammal rendelkezo helyiseg csoportjat mutassuk ki select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG having SZ_H_CIM_IRANYITOSZAM = (select MAX (SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG; go -- Szamlaljuk meg, hogy hany szinhaz van helyisegenkent a nyilvantartasban -- es listazzuk a csoportokat a szinhazszamok szerint forditott/csokkeno sorrendben select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG order by COUNT(SZINHAZNEV) desc; go --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -- Szamlaljuk meg, hogy hany szinhaz van helyisegenkent a nyilvantartasban -- es csak a legnagyobb szinhazszammal rendelkezo helyiseg csoportjat mutassuk ki select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG having COUNT(SZINHAZNEV) = (select MAX (h_sz_sz) from (select COUNT(SZINHAZNEV) as h_sz_sz from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG) as h); go --!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /* a selectben szereplo mezok kotelezoen elo kell forduljanak a group by-ban!!! select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM having SZ_H_CIM_IRANYITOSZAM = (select MAX (SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go */ use Szinhazportal; go -- Szamlaljuk meg, hogy hany kulonbozo szinhaznev van helyisegenkent a nyilvantartasban -- es csak a legnagyobb iranyitoszammal rendelkezo helyiseg csoportjat mutassuk ki select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(distinct SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG having SZ_H_CIM_IRANYITOSZAM = (select MAX (SZ_H_CIM_IRANYITOSZAM) from dbo.SZINHAZ); go -- Szamlaljuk meg, hogy hany kulonbozo szinhaznev van helyisegenkent a nyilvantartasban -- es csak a helyiseg tablaban talalhato legnagyobb iranyitoszammal rendelkezo helyiseg csoportjat mutassuk ki select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, COUNT(distinct SZINHAZNEV) from dbo.SZINHAZ group by SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG having SZ_H_CIM_IRANYITOSZAM = (select MAX (H_IRANYITOSZAM) from dbo.HELYISEG); go -- A belso select egy erteket ad vissza -- Unutrašnji SELECT vraća jednu vrednost -- Belso select a SELECT-ben -- Listazzuk az SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, SZINHAZNEV-et a szinhaz tablabol, -- valamint a legkisebb iranyitoszamu helyiseget ( H_IRANYITOSZAM, HELYISEGNEV) a helyiseg tablabol select SZ_H_CIM_IRANYITOSZAM, SZ_H_CIM_HELYSEG, SZINHAZNEV, (select MIN(H_IRANYITOSZAM) from dbo.HELYISEG)as 'Legkisebb iranyitoszam a helyisegben', (select HELYISEGNEV from dbo.HELYISEG where H_IRANYITOSZAM=(select MIN(H_IRANYITOSZAM) from dbo.HELYISEG))as 'A legkisebb iranyitoszamhoz tartozo helyiseg' from dbo.SZINHAZ; go --Utolso talalkozas -- /* 1. Listázzuk az országneveket és országjelzéseket! */ use Szinhazportal; go select distinct orszag.ORSZAGNEV, orszag.ORSZAG_JELZES from orszag order by ORSZAG_JELZES; go /* 4. Listázzuk az M betűvel kezdődő országneveket ABC/fordított ABC sorrendben! */ select orszag.ORSZAGNEV from orszag where substring(orszag.ORSZAGNEV, 1,1) = 'M'; go select orszag.ORSZAGNEV from orszag where orszag.ORSZAGNEV like 'M%'; go /* 5. Listázzuk a hét betűből álló országneveket csupa kisbetűkkel! */ select lower(orszag.ORSZAGNEV), len(orszag.ORSZAGNEV) from orszag where len(orszag.ORSZAGNEV)=7; go /* 6. Számláljuk meg, hogy hány ország van a nyilvántartásban! */ select COUNT(distinct orszag.ORSZAGNEV) from orszag; go /* 7. Listázzuk az országneveket a következő kezdőbetűkkel: M-től S-ig. */ select distinct orszag.ORSZAGNEV from orszag where orszag.ORSZAGNEV like 'M%' or orszag.ORSZAGNEV like'S%'; go select distinct orszag.ORSZAGNEV from orszag where orszag.ORSZAGNEV >= 'M' and orszag.ORSZAGNEV <= 'S'; go select distinct orszag.ORSZAGNEV from orszag where orszag.ORSZAGNEV between 'M' and 'T'; go select distinct orszag.ORSZAGNEV from orszag where substring(orszag.ORSZAGNEV, 1,1) between 'M' and 'S'; go /* 10. Hány betűs a leghosszabb nevű ország? */ select MAX(len(orszag.orszagnev)) from orszag; go /* 11. Név szerint melyek a leghosszabb nevű országok (és milyen hosszúak)? */ select orszag.ORSZAGNEV, MAX(len(orszag.orszagnev)) from orszag group by orszag.ORSZAGNEV; go select orszag.ORSZAGNEV, MAX(len(orszag.orszagnev)) from orszag group by orszag.ORSZAGNEV having len(orszag.orszagnev)= (select MAX(len(orszag.orszagnev)) from orszag); go select orszag.ORSZAGNEV, LEN(orszag.ORSZAGNEV) from orszag where LEN(orszag.ORSZAGNEV)= (select MAX(len(orszag.orszagnev)) from orszag); go /* 12. Írassa ki az országnevek első négy betűjét! */ select distinct substring(orszag.ORSZAGNEV, 1,4) from orszag; go /* 14. Milyen színház-terem neveket tartunk nyilván Szerbiából? */ select t.TEREM_NEVE from TEREM t join szinhaz sz on sz.SZINHAZ_AZ=t.SZINHAZ_AZ join HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ join orszag o on o.ORSZAG_AZ=h.ORSZAG_AZ where o.ORSZAGNEV='Szerbia'; go select TEREM_NEVE from TEREM where SZINHAZ_AZ in (select SZINHAZ_AZ from dbo.SZINHAZ where HELYISEG_AZ in (select HELYISEG_AZ from dbo.HELYISEG where ORSZAG_AZ in (select ORSZAG_AZ from dbo.ORSZAG where ORSZAGNEV='Szerbia'))); go select * from TEREM; go select * from szinhaz; go insert TEREM values (2,'Pataki Laszlo', 590); go /* 15. Mekkora a Szerbiában nyilvántartott színháztermek össz kapacitása? */ select SUM(TE_FEROHELYEK_SZAMA) from TEREM where SZINHAZ_AZ in (select SZINHAZ_AZ from dbo.SZINHAZ where HELYISEG_AZ in (select HELYISEG_AZ from dbo.HELYISEG where ORSZAG_AZ in (select ORSZAG_AZ from dbo.ORSZAG where ORSZAGNEV='Szerbia'))); go /* 16. Országonként hány helyiséget tartunk nyilván? */ select o.ORSZAGNEV, COUNT(h.HELYISEG_AZ) from HELYISEG h join ORSZAG o on o.ORSZAG_AZ=h.ORSZAG_AZ group by o.ORSZAGNEV; go use Szinhazportal; go /* 28. Számláljuk meg a helyiségekben azokat az amatőri színházakat, amelyek rendelkeznek 50-től nagyobb férőhelyes teremmel/termekkel! */ select HELYISEGNEV, COUNT(sz.SZINHAZ_AZ) from dbo.SZINHAZ sz join HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ join dbo.TEREM t on t.SZINHAZ_AZ=sz.SZINHAZ_AZ where SZ_H_AMATOR=0 and TE_FEROHELYEK_SZAMA>50 group by HELYISEGNEV; go /* 26. Számláljuk meg a helyiségekben a színháztermeket, és csak azok a helyiségek kerüljenek az eredménytáblába, amelyekben a színháztermek száma nem kisebb, mint 3, A listát rendezzük a színháztermek száma szerint fordított sorrendben! */ select HELYISEG_AZ, COUNT(TEREM_AZ) from szinhaz sz join TEREM t on t.SZINHAZ_AZ=sz.SZINHAZ_AZ group by HELYISEG_AZ having COUNT(TEREM_AZ)>=1 order by COUNT(TEREM_AZ) desc; go /* 25. Listázzuk a vajdasági helyiségeket, amatőrszínházakat és színháztermeiket! A listát rendezzük a helyiségnevek szerint ABC sorrendbe! */ select HELYISEGNEV, SZINHAZNEV, TEREM_NEVE from HELYISEG h join SZINHAZ sz on sz.HELYISEG_AZ=h.HELYISEG_AZ join TEREM t on t.SZINHAZ_AZ=sz.SZINHAZ_AZ where sz.SZ_H_AMATOR=0 order by HELYISEGNEV; go -- A belso select tablat ad vissza -- Unutrašnji SELECT vraća tabelu -- !!!-405 oldal -- PIVOTING??? -- Belso select a FROM-ban --from