USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_lc_get_Struktur_Auswahl] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_lc_get_Struktur_Auswahl] GO /****** Object: StoredProcedure [dbo].[sp_lc_get_Struktur_Auswahl] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[sp_lc_get_Struktur_Auswahl] @selectiontype AS integer AS BEGIN DECLARE @tmp1 TABLE ( id INT , parentid INT , bezeichnung VARCHAR(255) , imageindex INT , beschreibung VARCHAR(1024) , IstStruktur BIT , verweisnr INT , copy INT , originalid INT, eingesetzt INT, sort int ) SET NOCOUNT ON; -- Alle Produkte INSERT @tmp1 SELECT lc_produktnr AS id , lc_produktnr_parent AS parentid , bezeichnung , imageindex AS imageindex , ISNULL(Beschreibung, '') AS Beschreibung , IstStruktur , ISNULL(verweisnr, 0) AS Verweisnr , 0 AS copy , LC_ProduktNr, ISNULL(StatusNr,0), ISNULL(sort,0) AS sort FROM dbo.LC_Produkt WHERE aktiv = 1 INSERT @tmp1 ( id , parentid , bezeichnung , imageindex , beschreibung , IstStruktur , verweisnr , copy, eingesetzt,sort ) VALUES ( 0 , NULL , 'Root' , 1 , '' , 1 , 0 , 0, 0, -1 ) UPDATE @tmp1 SET imageindex = imageindex + 0 WHERE id IN ( SELECT lc_produktnr FROM lc_produkt WHERE IstStruktur = 1 ) INSERT @tmp1 ( id , parentid , bezeichnung , imageindex , beschreibung , IstStruktur , verweisnr , copy , Originalid, eingesetzt, sort ) SELECT dbo.LC_Produkt_Copy.lc_produkt_copynr AS id , dbo.LC_Produkt_Copy.lc_produkt_parentnr AS parentid , dbo.LC_Produkt.Bezeichnung , dbo.LC_Produkt.Imageindex , dbo.LC_Produkt.Beschreibung , 0 , 0 , 1 , lc_produkt.LC_ProduktNr, ISNULL(lc_produkt.StatusNr,0), 0 FROM dbo.LC_Produkt_Copy INNER JOIN dbo.LC_Produkt ON dbo.LC_Produkt_Copy.lc_produktnr = dbo.LC_Produkt.LC_ProduktNr WHERE ( dbo.LC_Produkt_Copy.aktiv = 1 ) AND ( dbo.LC_Produkt.Aktiv = 1 ) IF @selectiontype=1 BEGIN DELETE FROM @tmp1 WHERE IstStruktur=0 AND eingesetzt=0 INSERT @tmp1 ( id , parentid , bezeichnung , imageindex , beschreibung , IstStruktur , verweisnr , copy , Originalid, eingesetzt,sort ) SELECT lc_produktnr AS id , lc_produktnr_parent AS parentid , bezeichnung , imageindex AS imageindex , ISNULL(Beschreibung, '') AS Beschreibung , IstStruktur , ISNULL(verweisnr, 0) AS Verweisnr , 0 AS copy , LC_ProduktNr, ISNULL(StatusNr,0), ISNULL(sort,0) FROM dbo.LC_Produkt WHERE aktiv = 1 AND lc_produktnr NOT IN (SELECT id FROM @tmp1) AND lc_produktnr IN (SELECT parentid FROM @tmp1) END IF @selectiontype=2 BEGIN DELETE FROM @tmp1 WHERE IstStruktur=0 AND eingesetzt=1 INSERT @tmp1 ( id , parentid , bezeichnung , imageindex , beschreibung , IstStruktur , verweisnr , copy , Originalid, eingesetzt, sort ) SELECT lc_produktnr AS id , lc_produktnr_parent AS parentid , bezeichnung , imageindex AS imageindex , ISNULL(Beschreibung, '') AS Beschreibung , IstStruktur , ISNULL(verweisnr, 0) AS Verweisnr , 0 AS copy , LC_ProduktNr, ISNULL(StatusNr,0), ISNULL(sort,0) AS sort FROM dbo.LC_Produkt WHERE aktiv = 1 AND lc_produktnr NOT IN (SELECT id FROM @tmp1) AND lc_produktnr IN (SELECT parentid FROM @tmp1) end SELECT * FROM @tmp1 ORDER BY sort,bezeichnung end GO