You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

773 lines
33 KiB

USE [shub_bwpk]
GO
/****** Object: StoredProcedure [dbo].[Berufsliste] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Berufsliste]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[Berufsliste]
GO
/****** Object: StoredProcedure [dbo].[get_offene_plaetze] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[get_offene_plaetze]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[get_offene_plaetze]
GO
/****** Object: StoredProcedure [dbo].[nicht_zuget_berufe] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[nicht_zuget_berufe]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[nicht_zuget_berufe]
GO
/****** Object: StoredProcedure [dbo].[sp_anmeldetalon] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_anmeldetalon]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_anmeldetalon]
GO
/****** Object: StoredProcedure [dbo].[sp_lehrerdaten] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_lehrerdaten]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_lehrerdaten]
GO
/****** Object: StoredProcedure [dbo].[verify_klasse] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[verify_klasse]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[verify_klasse]
GO
/****** Object: StoredProcedure [dbo].[verify_schueler] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[verify_schueler]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[verify_schueler]
GO
/****** Object: StoredProcedure [dbo].[zuteilen] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[zuteilen]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[zuteilen]
GO
/****** Object: StoredProcedure [dbo].[zuteilung_durchfuehren] Script Date: 12/25/2012 14:35:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[zuteilung_durchfuehren]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[zuteilung_durchfuehren]
GO
USE [shub_bwpk]
GO
/****** Object: StoredProcedure [dbo].[Berufsliste] Script Date: 12/25/2012 14:35:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[Berufsliste]
AS
BEGIN
delete from tmpberufstatistik;
insert into tmpberufstatistik (berufnr, klassentypnr, anzahl_angebot, Anzahl_Prio1, Anzahl_Prio2, Anzahl_Prio3, Anzahl_Prio4, Anzahl_Prio5)
SELECT dbo.Beruf.Berufnr, dbo.FirmaBeruf.KlasseNr, SUM(dbo.FirmaBeruf.Anzahl),0,0,0,0,0
FROM dbo.Beruf INNER JOIN
dbo.FirmaBeruf ON dbo.Beruf.Berufnr = dbo.FirmaBeruf.Berufnr
WHERE (dbo.FirmaBeruf.Aktiv = 1)
GROUP BY dbo.Beruf.Berufnr, dbo.Beruf.Bezeichnung, dbo.FirmaBeruf.KlasseNr
update tmpberufstatistik set anzahl_angebot = 0 where anzahl_angebot is null;
update TmpBerufStatistik set Anzahl_Prio1 = (SELECT COUNT(dbo.SchuelerBeruf.SchuelerBerufNr)
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
WHERE dbo.SchuelerBeruf.Prioritaet = 1 AND tmpberufstatistik.berufnr = schuelerberuf.berufnr and dbo.SchuelerBeruf.Aktiv = 1 AND dbo.Schueler.KlassenTyp = tmpberufstatistik.klassentypnr)
update TmpBerufStatistik set Anzahl_Prio2 = (SELECT COUNT(dbo.SchuelerBeruf.SchuelerBerufNr)
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
WHERE dbo.SchuelerBeruf.Prioritaet = 2 AND tmpberufstatistik.berufnr = schuelerberuf.berufnr and dbo.SchuelerBeruf.Aktiv = 1 AND dbo.Schueler.KlassenTyp = tmpberufstatistik.klassentypnr)
update TmpBerufStatistik set Anzahl_Prio3 = (SELECT COUNT(dbo.SchuelerBeruf.SchuelerBerufNr)
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
WHERE dbo.SchuelerBeruf.Prioritaet = 3 AND tmpberufstatistik.berufnr = schuelerberuf.berufnr and dbo.SchuelerBeruf.Aktiv = 1 AND dbo.Schueler.KlassenTyp = tmpberufstatistik.klassentypnr)
update TmpBerufStatistik set Anzahl_Prio4 = (SELECT COUNT(dbo.SchuelerBeruf.SchuelerBerufNr)
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
WHERE dbo.SchuelerBeruf.Prioritaet = 4 AND tmpberufstatistik.berufnr = schuelerberuf.berufnr and dbo.SchuelerBeruf.Aktiv = 1 AND dbo.Schueler.KlassenTyp = tmpberufstatistik.klassentypnr)
update TmpBerufStatistik set Anzahl_Prio4 = (SELECT COUNT(dbo.SchuelerBeruf.SchuelerBerufNr)
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
WHERE dbo.SchuelerBeruf.Prioritaet >4 AND tmpberufstatistik.berufnr = schuelerberuf.berufnr and dbo.SchuelerBeruf.Aktiv = 1 AND dbo.Schueler.KlassenTyp = tmpberufstatistik.klassentypnr)
--update tmpberufstatistik set anzahl_prio1 = (select count(schuelerberuf.schuelerberufnr)
--from schuelerberuf
--where tmpberufstatistik.berufnr = schuelerberuf.berufnr and schuelerberuf.aktiv=1 and schuelerberuf.prioritaet=1);
--update tmpberufstatistik set anzahl_prio2 = (select count(schuelerberuf.schuelerberufnr)
--from schuelerberuf
--where tmpberufstatistik.berufnr = schuelerberuf.berufnr and schuelerberuf.aktiv=1 and schuelerberuf.prioritaet=2);
--update tmpberufstatistik set anzahl_prio3 = (select count(schuelerberuf.schuelerberufnr)
--from schuelerberuf
--where tmpberufstatistik.berufnr = schuelerberuf.berufnr and schuelerberuf.aktiv=1 and schuelerberuf.prioritaet=3);
--update tmpberufstatistik set anzahl_prio4 = (select count(schuelerberuf.schuelerberufnr)
--from schuelerberuf
--where tmpberufstatistik.berufnr = schuelerberuf.berufnr and schuelerberuf.aktiv=1 and schuelerberuf.prioritaet=4);
--update tmpberufstatistik set anzahl_prio5 = (select count(schuelerberuf.schuelerberufnr)
--from schuelerberuf
--where tmpberufstatistik.berufnr = schuelerberuf.berufnr and schuelerberuf.aktiv=1 and schuelerberuf.prioritaet>4);
--SELECT
-- TmpBerufStatistik.Berufnr,
-- Beruf.Bezeichnung,
-- TmpBerufStatistik.Anzahl_Angebot,
-- TmpBerufStatistik.Anzahl_Prio1,
-- TmpBerufStatistik.Anzahl_Prio2,
-- TmpBerufStatistik.Anzahl_Prio3,
-- TmpBerufStatistik.Anzahl_Prio4,
-- TmpBerufStatistik.Anzahl_Prio5,
-- (anzahl_prio2 + anzahl_prio3 + anzahl_prio4 + anzahl_prio5) AS Prio_2_bis_5,
-- anzahl_angebot - (anzahl_prio1 + anzahl_prio2 + anzahl_prio3 + anzahl_prio4 + anzahl_prio5) AS Differenz
--FROM
-- TmpBerufStatistik
-- INNER JOIN Beruf ON (TmpBerufStatistik.Berufnr = Beruf.Berufnr)
--order by beruf.bezeichnung;
--END
declare @bnr int
declare @bez varchar(255)
declare @z int
set @z=1
declare xc cursor for
select distinct dbo.TmpBerufStatistik.berufnr, dbo.beruf.bezeichnung from tmpBerufstatistik
INNER JOIN
dbo.Beruf ON dbo.TmpBerufStatistik.Berufnr = dbo.Beruf.Berufnr
order by dbo.beruf.bezeichnung
open xc
fetch next from xc into @bnr, @bez
while @@FETCH_STATUS=0 begin
update TmpBerufStatistik set nr=@z where berufnr=@bnr
set @z=@z+1
fetch next from xc into @bnr, @bez
end
close xc
deallocate xc
SELECT TOP (100) PERCENT dbo.TmpBerufStatistik.nr, dbo.TmpBerufStatistik.Berufnr, dbo.Beruf.Bezeichnung, dbo.web_klasse.bezeichnung AS Expr1, dbo.TmpBerufStatistik.Anzahl_Angebot,
dbo.TmpBerufStatistik.Anzahl_Prio1, dbo.TmpBerufStatistik.Anzahl_Prio2, dbo.TmpBerufStatistik.Anzahl_Prio3, dbo.TmpBerufStatistik.Anzahl_Prio4,
dbo.TmpBerufStatistik.Anzahl_Prio5,
dbo.TmpBerufStatistik.Anzahl_Prio2 + dbo.TmpBerufStatistik.Anzahl_Prio3 + dbo.TmpBerufStatistik.Anzahl_Prio4 + dbo.TmpBerufStatistik.Anzahl_Prio5 AS Prio_2_bis_5,
dbo.TmpBerufStatistik.Anzahl_Angebot - (dbo.TmpBerufStatistik.Anzahl_Prio1 + dbo.TmpBerufStatistik.Anzahl_Prio2 + dbo.TmpBerufStatistik.Anzahl_Prio3 + dbo.TmpBerufStatistik.Anzahl_Prio4
+ dbo.TmpBerufStatistik.Anzahl_Prio5) AS Differenz, dbo.web_klasse.klassenr
FROM dbo.TmpBerufStatistik INNER JOIN
dbo.Beruf ON dbo.TmpBerufStatistik.Berufnr = dbo.Beruf.Berufnr INNER JOIN
dbo.web_klasse ON dbo.TmpBerufStatistik.klassentypnr = dbo.web_klasse.klassenr
ORDER BY dbo.Beruf.Bezeichnung, dbo.web_klasse.klassenr
end
GO
/****** Object: StoredProcedure [dbo].[get_offene_plaetze] Script Date: 12/25/2012 14:35:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[get_offene_plaetze]
@berufnr int,
@klassentyp int
as
BEGIN
SELECT dbo.FirmaBeruf.FirmaBerufNr, dbo.Firma.FirmaNr, dbo.Firma.NameZ1, SUM(dbo.FirmaBeruf.Anzahl) AS Anzahl, dbo.Zeiten.Bezeichnung, dbo.FirmaBeruf.Berufnr, dbo.Zeiten.ZeitNr
into #tmp1
FROM dbo.Firma INNER JOIN
dbo.FirmaBeruf ON dbo.Firma.FirmaNr = dbo.FirmaBeruf.FirmaNr INNER JOIN
dbo.Zeiten ON dbo.FirmaBeruf.ZeitNr = dbo.Zeiten.ZeitNr
WHERE (dbo.Firma.Aktiv = 1) AND (dbo.FirmaBeruf.Aktiv = 1) and FirmaBeruf.Berufnr=@berufnr and dbo.FirmaBeruf.KlasseNr>=@klassentyp
GROUP BY dbo.Firma.FirmaNr, dbo.Firma.NameZ1, dbo.Zeiten.Bezeichnung, dbo.FirmaBeruf.Berufnr, dbo.Zeiten.ZeitNr, dbo.firmaberuf.firmaberufnr
declare @count int
declare @fnr int
declare @znr int
declare xc cursor for
select firmanr, zeitnr from #tmp1
open xc
fetch next from xc into @fnr, @znr
while @@FETCH_STATUS=0 begin
SELECT @count=COUNT(dbo.Zuteilung.EintragNr)
FROM dbo.Zuteilung INNER JOIN
dbo.FirmaBeruf ON dbo.Zuteilung.FirmaBerufNr = dbo.FirmaBeruf.FirmaBerufNr
WHERE (dbo.FirmaBeruf.FirmaNr = @fnr) AND (dbo.Zuteilung.Zeitnr = @znr) AND (dbo.Zuteilung.aktiv = 1) and dbo.firmaberuf.aktiv=1
update #tmp1 set anzahl=(anzahl-@count) where firmanr=@fnr and zeitnr=@znr
fetch next from xc into @fnr, @znr
end
close xc
deallocate xc
select FirmaBerufNr, NameZ1, Bezeichnung as Zeit, Anzahl from #tmp1 where Anzahl> 0
drop table #tmp1
END
GO
/****** Object: StoredProcedure [dbo].[nicht_zuget_berufe] Script Date: 12/25/2012 14:35:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[nicht_zuget_berufe]
AS
BEGIN
declare @anzahl_zuteilungen int
select @anzahl_zuteilungen=inhalt from Optionen where Optionnr=9
--delete from Zuteilung where aktiv=0
SELECT dbo.Schueler.SchuelerNr, dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname AS Schueler,
dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname AS Lehrer, dbo.Beruf.Bezeichnung AS Beruf, dbo.SchuelerBeruf.Prioritaet, 0 as Typ,
SchuelerBeruf.SchuelerBerufNr, prio1=0
into #tmp1
FROM
SchuelerBeruf
INNER JOIN Schueler ON (SchuelerBeruf.SchuelerNr = Schueler.SchuelerNr)
INNER JOIN Klasse ON (Schueler.KlasseNr = Klasse.KlasseNr)
INNER JOIN Beruf ON (SchuelerBeruf.BerufNr = Beruf.Berufnr)
INNER JOIN dbo.web_Lehrer ON dbo.Klasse.Lehrernr = dbo.web_Lehrer.LehrerNr
WHERE
schuelerberuf.aktiv = 1 AND
beruf.aktiv = 1 AND
schueler.aktiv = 1 AND
schuelerberuf.SchuelerBerufNr NOT IN (SELECT zuteilung.schuelerberufnr FROM zuteilung where aktiv=1)
GROUP BY dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname, dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname, dbo.Beruf.Bezeichnung, dbo.SchuelerBeruf.Prioritaet,
dbo.Schueler.SchuelerNr ,SchuelerBeruf.SchuelerBerufNr
Insert into #tmp1
SELECT dbo.Schueler.SchuelerNr, dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname AS Schueler,
dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname AS Lehrer, dbo.Beruf.Bezeichnung AS Beruf, dbo.SchuelerBeruf.Prioritaet, 0 as Typ,
SchuelerBeruf.SchuelerBerufNr,0
FROM
SchuelerBeruf
INNER JOIN Schueler ON (SchuelerBeruf.SchuelerNr = Schueler.SchuelerNr)
INNER JOIN Klasse ON (Schueler.KlasseNr = Klasse.KlasseNr)
INNER JOIN Beruf ON (SchuelerBeruf.BerufNr = Beruf.Berufnr)
INNER JOIN dbo.web_Lehrer ON dbo.Klasse.Lehrernr = dbo.web_Lehrer.LehrerNr
WHERE
schuelerberuf.aktiv = 1 AND
beruf.aktiv = 1 AND
schueler.aktiv = 1 AND
schuelerberuf.SchuelerBerufNr NOT IN (SELECT zuteilung.schuelerberufnr FROM zuteilung where aktiv=1) and
SchuelerBeruf.SchuelerBerufNr not in (select SchuelerBerufNr from #tmp1)
GROUP BY dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname, dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname, dbo.Beruf.Bezeichnung, dbo.SchuelerBeruf.Prioritaet,
dbo.Schueler.SchuelerNr ,SchuelerBeruf.SchuelerBerufNr
update #tmp1 set prio1=2
update #tmp1 set prio1=1 where prioritaet=1
SELECT
count(Zuteilung.EintragNr) AS Counter,
#tmp1.SchuelerNr,
#tmp1.Schueler,
#tmp1.Lehrer,
#tmp1.Beruf,
#tmp1.Prioritaet,
#tmp1.typ,
#tmp1.prio1 as Gruppe
FROM
SchuelerBeruf
INNER JOIN Zuteilung ON (SchuelerBeruf.SchuelerBerufNr = Zuteilung.SchuelerBerufNr)
INNER JOIN #tmp1 ON (SchuelerBeruf.SchuelerNr = #tmp1.SchuelerNr)
where zuteilung.aktiv=1
GROUP BY
#tmp1.SchuelerNr,
#tmp1.Schueler,
#tmp1.Lehrer,
#tmp1.Beruf,
#tmp1.Prioritaet,
#tmp1.typ,
#tmp1.prio1
HAVING
count(Zuteilung.EintragNr) <> @anzahl_zuteilungen or #tmp1.Prioritaet=1
--SELECT dbo.Schueler.SchuelerNr, dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname AS Schueler,
-- dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname AS Lehrer, dbo.Beruf.Bezeichnung AS Beruf, dbo.SchuelerBeruf.Prioritaet, 0 as Typ
--into #tmp1 FROM dbo.SchuelerBeruf INNER JOIN
-- dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr INNER JOIN
-- dbo.Klasse ON dbo.Schueler.KlasseNr = dbo.Klasse.KlasseNr INNER JOIN
-- dbo.Beruf ON dbo.SchuelerBeruf.BerufNr = dbo.Beruf.Berufnr INNER JOIN
-- dbo.web_Lehrer ON dbo.Klasse.Lehrernr = dbo.web_Lehrer.LehrerNr
--WHERE (dbo.SchuelerBeruf.Prioritaet = 1 and dbo.SchuelerBeruf.Aktiv = 1) AND (dbo.Beruf.Aktiv = 1) AND (dbo.Schueler.Aktiv = 1) AND (dbo.SchuelerBeruf.SchuelerBerufNr NOT IN
-- (SELECT SchuelerBerufNr
-- FROM dbo.Zuteilung where aktiv=1))
--GROUP BY dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname, dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname, dbo.Beruf.Bezeichnung, dbo.SchuelerBeruf.Prioritaet,
-- dbo.Schueler.SchuelerNr
--insert into #tmp1
--SELECT dbo.Schueler.SchuelerNr, dbo.Schueler.Name + ' ' + dbo.Schueler.Vorname AS Schueler,
-- dbo.web_Lehrer.Name + ' ' + dbo.web_Lehrer.Vorname AS Lehrer, dbo.Beruf.Bezeichnung AS Beruf, dbo.SchuelerBeruf.Prioritaet, 1 as Typ
-- FROM dbo.SchuelerBeruf INNER JOIN
-- dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr INNER JOIN
-- dbo.Klasse ON dbo.Schueler.KlasseNr = dbo.Klasse.KlasseNr INNER JOIN
-- dbo.Beruf ON dbo.SchuelerBeruf.BerufNr = dbo.Beruf.Berufnr INNER JOIN
-- dbo.web_Lehrer ON dbo.Klasse.Lehrernr = dbo.web_Lehrer.LehrerNr
--WHERE (dbo.SchuelerBeruf.Prioritaet <> 1 and dbo.SchuelerBeruf.Aktiv = 1) AND (dbo.Beruf.Aktiv = 1) AND (dbo.Schueler.Aktiv = 1) AND (dbo.SchuelerBeruf.SchuelerBerufNr NOT IN
-- (SELECT SchuelerBerufNr
-- FROM dbo.Zuteilung where aktiv=1 )) and dbo.schuelerberuf.SchuelerNr not in (select SchuelerNr from #tmp1)
--select * from #tmp1 order by typ, schueler
--return
--SELECT
-- count(Zuteilung.EintragNr) AS Counter,
-- #tmp1.SchuelerNr,
-- #tmp1.Schueler,
-- #tmp1.Lehrer,
-- #tmp1.Beruf,
-- #tmp1.Prioritaet
--FROM
-- SchuelerBeruf
-- INNER JOIN Zuteilung ON (SchuelerBeruf.SchuelerBerufNr = Zuteilung.SchuelerBerufNr)
-- INNER JOIN #tmp1 ON (SchuelerBeruf.SchuelerNr = #tmp1.SchuelerNr)
-- --where zuteilung.aktiv=1
--GROUP BY
-- #tmp1.SchuelerNr,
-- #tmp1.Schueler,
-- #tmp1.Lehrer,
-- #tmp1.Beruf,
-- #tmp1.Prioritaet
--HAVING
-- count(Zuteilung.EintragNr) <> 3;
-- END
drop table #tmp1
end
GO
/****** Object: StoredProcedure [dbo].[sp_anmeldetalon] Script Date: 12/25/2012 14:35:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_anmeldetalon]
AS
BEGIN
SELECT DISTINCT
TOP (100) PERCENT dbo.Beruf.Berufnr, dbo.Beruf.Bezeichnung, dbo.Beruf.Anmerkung, dbo.Beruf.Lehrjahre, dbo.get_option(8) AS Textblock,
MAX(dbo.FirmaBeruf.KlasseNr) AS Klassenr,' ' as Klassentyp
into #tmp1
FROM dbo.FirmaBeruf INNER JOIN
dbo.Beruf ON dbo.FirmaBeruf.Berufnr = dbo.Beruf.Berufnr
GROUP BY dbo.Beruf.Berufnr, dbo.Beruf.Bezeichnung, dbo.Beruf.Anmerkung, dbo.Beruf.Lehrjahre
declare @b int
declare @k int
declare @bez varchar(255)
declare xc cursor for
select berufnr, klassenr from #tmp1
open xc
fetch next from xc into @b, @k
while @@FETCH_STATUS=0 begin
select @bez=bezeichnung from web_klasse where klassenr=@k
update #tmp1 set klassentyp=@bez where berufnr=@b
fetch next from xc into @b, @k
end
close xc
deallocate xc
select * from #tmp1 order by bezeichnung
END
GO
/****** Object: StoredProcedure [dbo].[sp_lehrerdaten] Script Date: 12/25/2012 14:35:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_lehrerdaten]
@lehrernr int = 0
AS
BEGIN
if @lehrernr=0 begin
SELECT TOP (100) PERCENT dbo.web_Lehrer.LehrerNr, dbo.web_Lehrer.Anrede, dbo.web_Lehrer.Name, dbo.web_Lehrer.Vorname, dbo.web_Lehrer.Telefon,
dbo.web_Lehrer.email, dbo.web_Lehrer.natel, dbo.Schulhaus.SchulhausNr, dbo.Schulhaus.Bezeichnung, dbo.Schulhaus.Strasse, dbo.Schulhaus.PLZ,
dbo.Schulhaus.Ort, dbo.Schulhaus.Telefon AS Schulhaustelefon, dbo.Klasse.KlasseNr, dbo.Klasse.Bezeichnung AS Klasse, dbo.Schueler.SchuelerNr,
dbo.Schueler.Name AS Schuelername, dbo.Schueler.Vorname AS Schuelervorname, dbo.Schueler.Bemerkung, dbo.web_klasse.bezeichnung AS Schultyp,
dbo.SchuelerBeruf.SchuelerBerufNr, dbo.SchuelerBeruf.SchuelerNr AS Schuelerberufschuelernr, dbo.Beruf.Bezeichnung AS Schuelerberuf,
dbo.SchuelerBeruf.Prioritaet, dbo.SchuelerBeruf.Aktiv, dbo.SchuelerBeruf.Bemerkung AS Berufbemerkung
into #tmp2
FROM dbo.web_klasse INNER JOIN
dbo.web_Lehrer INNER JOIN
dbo.web_user ON dbo.web_Lehrer.LehrerNr = dbo.web_user.Lehrernr INNER JOIN
dbo.Schulhaus ON dbo.web_Lehrer.schulhausnr = dbo.Schulhaus.SchulhausNr INNER JOIN
dbo.Klasse ON dbo.web_Lehrer.LehrerNr = dbo.Klasse.Lehrernr INNER JOIN
dbo.Schueler ON dbo.Klasse.KlasseNr = dbo.Schueler.KlasseNr ON dbo.web_klasse.klassenr = dbo.Schueler.KlassenTyp LEFT OUTER JOIN
dbo.Beruf INNER JOIN
dbo.SchuelerBeruf ON dbo.Beruf.Berufnr = dbo.SchuelerBeruf.BerufNr ON dbo.Schueler.SchuelerNr = dbo.SchuelerBeruf.SchuelerNr
WHERE (dbo.Schueler.Aktiv = 1) AND (dbo.SchuelerBeruf.Aktiv = 1)
insert #tmp2
SELECT TOP (100) PERCENT dbo.web_Lehrer.LehrerNr, dbo.web_Lehrer.Anrede, dbo.web_Lehrer.Name, dbo.web_Lehrer.Vorname, dbo.web_Lehrer.Telefon,
dbo.web_Lehrer.email, dbo.web_Lehrer.natel, dbo.Schulhaus.SchulhausNr, dbo.Schulhaus.Bezeichnung, dbo.Schulhaus.Strasse, dbo.Schulhaus.PLZ,
dbo.Schulhaus.Ort, dbo.Schulhaus.Telefon AS Schulhaustelefon, dbo.Klasse.KlasseNr, dbo.Klasse.Bezeichnung AS Klasse, dbo.Schueler.SchuelerNr,
dbo.Schueler.Name AS Schuelername, dbo.Schueler.Vorname AS Schuelervorname, dbo.Schueler.Bemerkung, dbo.web_klasse.bezeichnung AS Schultyp,
0 as SchuelerBerufNr, 0 as Schuelerberufschuelernr, '' as Schuelerberuf,
0 as Prioritaet, 1 as Aktiv, '' AS Berufbemerkung
FROM dbo.web_klasse INNER JOIN
dbo.web_Lehrer INNER JOIN
dbo.web_user ON dbo.web_Lehrer.LehrerNr = dbo.web_user.Lehrernr INNER JOIN
dbo.Schulhaus ON dbo.web_Lehrer.schulhausnr = dbo.Schulhaus.SchulhausNr INNER JOIN
dbo.Klasse ON dbo.web_Lehrer.LehrerNr = dbo.Klasse.Lehrernr INNER JOIN
dbo.Schueler ON dbo.Klasse.KlasseNr = dbo.Schueler.KlasseNr ON dbo.web_klasse.klassenr = dbo.Schueler.KlassenTyp
WHERE (dbo.Schueler.Aktiv = 1) and dbo.Schueler.SchuelerNr not in (select SchuelerNr from #tmp2)
select * from #tmp2 ORDER BY Klasse, Schuelername, Schuelervorname, Prioritaet
drop table #tmp2
end else begin
SELECT TOP (100) PERCENT dbo.web_Lehrer.LehrerNr, dbo.web_Lehrer.Anrede, dbo.web_Lehrer.Name, dbo.web_Lehrer.Vorname, dbo.web_Lehrer.Telefon,
dbo.web_Lehrer.email, dbo.web_Lehrer.natel, dbo.Schulhaus.SchulhausNr, dbo.Schulhaus.Bezeichnung, dbo.Schulhaus.Strasse, dbo.Schulhaus.PLZ,
dbo.Schulhaus.Ort, dbo.Schulhaus.Telefon AS Schulhaustelefon, dbo.Klasse.KlasseNr, dbo.Klasse.Bezeichnung AS Klasse, dbo.Schueler.SchuelerNr,
dbo.Schueler.Name AS Schuelername, dbo.Schueler.Vorname AS Schuelervorname, dbo.Schueler.Bemerkung, dbo.web_klasse.bezeichnung AS Schultyp,
dbo.SchuelerBeruf.SchuelerBerufNr, dbo.SchuelerBeruf.SchuelerNr AS Schuelerberufschuelernr, dbo.Beruf.Bezeichnung AS Schuelerberuf,
dbo.SchuelerBeruf.Prioritaet, dbo.SchuelerBeruf.Aktiv, dbo.SchuelerBeruf.Bemerkung AS Berufbemerkung
into #tmp1
FROM dbo.web_klasse INNER JOIN
dbo.web_Lehrer INNER JOIN
dbo.web_user ON dbo.web_Lehrer.LehrerNr = dbo.web_user.Lehrernr INNER JOIN
dbo.Schulhaus ON dbo.web_Lehrer.schulhausnr = dbo.Schulhaus.SchulhausNr INNER JOIN
dbo.Klasse ON dbo.web_Lehrer.LehrerNr = dbo.Klasse.Lehrernr INNER JOIN
dbo.Schueler ON dbo.Klasse.KlasseNr = dbo.Schueler.KlasseNr ON dbo.web_klasse.klassenr = dbo.Schueler.KlassenTyp LEFT OUTER JOIN
dbo.Beruf INNER JOIN
dbo.SchuelerBeruf ON dbo.Beruf.Berufnr = dbo.SchuelerBeruf.BerufNr ON dbo.Schueler.SchuelerNr = dbo.SchuelerBeruf.SchuelerNr
WHERE dbo.web_Lehrer.LehrerNr=@lehrernr and (dbo.Schueler.Aktiv = 1) AND (dbo.SchuelerBeruf.Aktiv = 1)
insert #tmp1
SELECT TOP (100) PERCENT dbo.web_Lehrer.LehrerNr, dbo.web_Lehrer.Anrede, dbo.web_Lehrer.Name, dbo.web_Lehrer.Vorname, dbo.web_Lehrer.Telefon,
dbo.web_Lehrer.email, dbo.web_Lehrer.natel, dbo.Schulhaus.SchulhausNr, dbo.Schulhaus.Bezeichnung, dbo.Schulhaus.Strasse, dbo.Schulhaus.PLZ,
dbo.Schulhaus.Ort, dbo.Schulhaus.Telefon AS Schulhaustelefon, dbo.Klasse.KlasseNr, dbo.Klasse.Bezeichnung AS Klasse, dbo.Schueler.SchuelerNr,
dbo.Schueler.Name AS Schuelername, dbo.Schueler.Vorname AS Schuelervorname, dbo.Schueler.Bemerkung, dbo.web_klasse.bezeichnung AS Schultyp,
0 as SchuelerBerufNr, 0 as Schuelerberufschuelernr, '' as Schuelerberuf,
0 as Prioritaet, 1 as Aktiv, '' AS Berufbemerkung
FROM dbo.web_klasse INNER JOIN
dbo.web_Lehrer INNER JOIN
dbo.web_user ON dbo.web_Lehrer.LehrerNr = dbo.web_user.Lehrernr INNER JOIN
dbo.Schulhaus ON dbo.web_Lehrer.schulhausnr = dbo.Schulhaus.SchulhausNr INNER JOIN
dbo.Klasse ON dbo.web_Lehrer.LehrerNr = dbo.Klasse.Lehrernr INNER JOIN
dbo.Schueler ON dbo.Klasse.KlasseNr = dbo.Schueler.KlasseNr ON dbo.web_klasse.klassenr = dbo.Schueler.KlassenTyp
WHERE dbo.web_Lehrer.LehrerNr=@lehrernr and (dbo.Schueler.Aktiv = 1) and dbo.Schueler.SchuelerNr not in (select SchuelerNr from #tmp1)
select * from #tmp1 ORDER BY Klasse, Schuelername, Schuelervorname, Prioritaet
drop table #tmp1
end
end
GO
/****** Object: StoredProcedure [dbo].[verify_klasse] Script Date: 12/25/2012 14:35:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[verify_klasse]
@klassenr int
AS
BEGIN
declare @c1 int
declare @c2 int
select @c1=klassengroesse from Klasse where KlasseNr = @klassenr
select @c2=COUNT(KlasseNr) from Schueler where KlasseNr=@klassenr and Aktiv=1
if @c1 = @c2 select 'Klasse komplett erfasst'
if @c1 < @c2 select 'Zu viele Schüler erfasst'
if @c1 > @c2 select rtrim(ltrim(CONVERT(varchar,@c2))) + ' von '+ rtrim(ltrim(CONVERT(varchar,@c1)))+' Schüler erfasst'
END
GO
/****** Object: StoredProcedure [dbo].[verify_schueler] Script Date: 12/25/2012 14:35:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[verify_schueler]
@schuelernr int
AS
BEGIN
declare @prio1 varchar(20)
declare @anzBerufe int
declare @counter int
declare @result varchar(1048)
select @prio1=inhalt from optionen where optionnr=5
select @anzBerufe=inhalt from Optionen where Optionnr=4
set @result=''
if @prio1='Ja' begin
select @counter=COUNT(*) from SchuelerBeruf where Aktiv=1 and Prioritaet=1 and schuelernr=@schuelernr
if @counter<1 begin
if @result<>'' set @result=@result+'<br />'
set @result=@result+'- Keine Berufswahl mit Priorität 1'
end
if @counter>1 begin
if @result<>'' set @result=@result+'<br />'
set @result=@result+'- Mehrere Berufe mit Priorität 1'
end
end
print @anzberufe
if @anzBerufe>0 begin
select @counter=COUNT(berufnr) from SchuelerBeruf where Aktiv=1 and SchuelerNr=@schuelernr
if @counter>@anzBerufe begin
if @result<>'' set @result=@result+'<br />'
set @result=@result+'- Mehr als ' + ltrim(str(@anzberufe))+ ' Berufe wurden ausgewählt.'
end
if @counter<@anzBerufe begin
if @result<>'' set @result=@result+'<br />'
set @result=@result+'- Weniger als ' + ltrim(str(@anzberufe))+ ' unterschiedliche Berufe wurden ausgewählt.'
end
end
if @result='' set @result='Schüler vollständig erfasst.' else set @result='Folgende Fehler sind vorhanden:<br />'+@result
select @result as resultat
END
GO
/****** Object: StoredProcedure [dbo].[zuteilen] Script Date: 12/25/2012 14:35:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[zuteilen]
@ischuelerberufnr int, @ischuelernr int, @isberufnr int,@ischuelerklassenr int, @iprioritaet int, @izugeteilt int
AS
BEGIN
declare @firmaberufnr int, @zeitnr int, @ansprechpartnernr int
declare @rc int
declare @i int
declare @doit int
declare @anzZuteilungen int
select @anzZuteilungen=inhalt from Optionen where Optionnr=9
set @i=0
set @doit=0
declare xc cursor for
select firmaberufnr, zeitnr, Ansprechpartnernr from #firma where berufnr=@isberufnr and zugeteilt < anzahl and klassenr >= @ischuelerklassenr
open xc
fetch next from xc into @firmaberufnr, @zeitnr, @ansprechpartnernr
while @@FETCH_STATUS=0 begin
set @i=@i+1
select @rc=COUNT(*) from Zuteilung where SchuelerNr=@ischuelernr and Zeitnr=@zeitnr
if @rc=0 begin
set @doit=1
break
end
fetch next from xc into @firmaberufnr, @zeitnr, @ansprechpartnernr
end
close xc
deallocate xc
if @i=0 return
if @doit=0 return
select @rc=COUNT(*) from Zuteilung where SchuelerNr=@ischuelernr
if @rc>@anzZuteilungen return
insert Zuteilung(FirmaBerufNr, SchuelerBerufNr,SchuelerNr,Zeitnr, Ansprechpartnernr,Prioritaet, aktiv, erstellt_am, mutiert_am,Bemerkung)
values (@firmaberufnr,@ischuelerberufnr,@ischuelernr,@zeitnr,@ansprechpartnernr, @iprioritaet, 1,GETDATE(),GETDATE(),'')
update #firma set zugeteilt=zugeteilt+1 where firmaberufnr=@firmaberufnr
END
GO
/****** Object: StoredProcedure [dbo].[zuteilung_durchfuehren] Script Date: 12/25/2012 14:35:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[zuteilung_durchfuehren]
@typ int=0
AS
BEGIN
-- Zuteilungen löschen
truncate table zuteilung
-- TempSchuler
CREATE TABLE #Schueler(
schuelerberufnr int,
schuelernr int,
berufnr int,
Prioritaet int,
Klassenr int,
Zugeteilt int)
ON [default]
CREATE TABLE #Firma(
Firmaberufnr int,
Berufnr int,
Zeitnr int,
Klassenr int,
Ansprechpartnernr int,
Zugeteilt int,
Anzahl int)
ON [default]
declare @firmaberufnr int, @berufnr int, @zeitnr int, @klassenr int, @zuget int
declare @schuelerberufnr int, @schuelernr int, @sberufnr int, @schuelerklassenr int, @prioritaet int, @zugeteilt int
insert into #Firma select firmaberufnr, berufnr, zeitnr, klassenr, Ansprechpartnernr, 0 as Zugegeilt, Anzahl from firmaberuf where aktiv=1 order by berufnr, zeitnr, firmanr
if @typ=0 begin
insert into #schueler
SELECT dbo.SchuelerBeruf.SchuelerBerufNr, dbo.SchuelerBeruf.SchuelerNr, dbo.SchuelerBeruf.BerufNr, dbo.SchuelerBeruf.Prioritaet, dbo.Schueler.KlassenTyp, 0
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
where SchuelerBeruf.Aktiv=1 and Schueler.Aktiv=1 and prioritaet=1 order by berufnr
insert into #schueler
SELECT dbo.SchuelerBeruf.SchuelerBerufNr, dbo.SchuelerBeruf.SchuelerNr, dbo.SchuelerBeruf.BerufNr, dbo.SchuelerBeruf.Prioritaet, dbo.Schueler.KlassenTyp, 0
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
where SchuelerBeruf.Aktiv=1 and Schueler.Aktiv=1 and prioritaet<>1 order by NEWID()
end else begin
insert into #schueler
SELECT dbo.SchuelerBeruf.SchuelerBerufNr, dbo.SchuelerBeruf.SchuelerNr, dbo.SchuelerBeruf.BerufNr, dbo.SchuelerBeruf.Prioritaet, dbo.Schueler.KlassenTyp, 0
FROM dbo.SchuelerBeruf INNER JOIN dbo.Schueler ON dbo.SchuelerBeruf.SchuelerNr = dbo.Schueler.SchuelerNr
where SchuelerBeruf.Aktiv=1 and Schueler.Aktiv=1 order by prioritaet, berufnr
end
-- Prio 1 abarbeiten
declare cschuler cursor for
select schuelerberufnr, schuelernr, berufnr, klassenr, prioritaet, zugeteilt from #schueler where prioritaet=1
open cschuler
fetch next from cschuler into @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
while @@FETCH_STATUS=0 begin
print @schuelerberufnr
exec dbo.zuteilen @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
fetch next from cschuler into @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
end
close cschuler
deallocate cschuler
-- Prio <> -1 abarbeiten
declare cschuler cursor for
select schuelerberufnr, schuelernr, berufnr, klassenr, prioritaet, zugeteilt from #schueler where prioritaet<>1
open cschuler
fetch next from cschuler into @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
while @@FETCH_STATUS=0 begin
exec dbo.zuteilen @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
fetch next from cschuler into @schuelerberufnr, @schuelernr, @sberufnr,@schuelerklassenr, @prioritaet, @zugeteilt
end
close cschuler
deallocate cschuler
--declare xc cursor for
-- select firmaberufnr, berufnr, zeitnr, klassenr from #firma order by berufnr, zeitnr, firmanr
--open xc
--fetch next from xc into @firmaberufnr, @berufnr, @zeitnr, @klassenr, @zuget
--while @@FETCH_STATUS=0 begin
-- fetch next from xc into @firmaberufnr, @berufnr, @zeitnr, @klassenr,@zuget
--end
--close xc
--deallocate xc
drop table #firma
drop table #schueler
END
GO