bonjour à tous
J'ai un petit soucis dans une procédure stockée : voici un un schéma de mon mcd simplifié :
DEV_SENS_TRANSPORT -- DEV_TRANSPORT -- DEV_BON_PEINTURE -- DEV_UTILISATEUR -- DEV_SECTEUR
la description intégrale sous forme DDL de vos tables :
DEV_SENS_TRANSPORT :
DEV_TRANSPORT
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 USE [pieces_peintes_db] GO /****** Objet*: Table [dbo].[DEV_SENS_TRANSPORT] Date de génération du script*: 03/20/2009 10:21:00 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[DEV_SENS_TRANSPORT]( [id_sens_transport] [int] IDENTITY(1,1) NOT NULL, [depart_sens_transport] [varchar](50) COLLATE French_CI_AS NOT NULL, [arrivee_sens_transport] [varchar](50) COLLATE French_CI_AS NULL, CONSTRAINT [PK_DEV_SENS_TRANSPORT] PRIMARY KEY CLUSTERED ( [id_sens_transport] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF
DEV_BON_PEINTURE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 USE [pieces_peintes_db] GO /****** Objet*: Table [dbo].[DEV_TRANSPORT] Date de génération du script*: 03/20/2009 10:22:45 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[DEV_TRANSPORT]( [id_sens_transport] [int] NOT NULL, [id_bon_peinture] [int] NOT NULL, [en_cour_transport] [int] NULL, [id_etape_transport] [int] NULL, [id_transport] [varchar](50) COLLATE French_CI_AS NULL, [date_transport] [datetime] NULL, CONSTRAINT [PK_DEV_TRANSPORT] PRIMARY KEY CLUSTERED ( [id_sens_transport] ASC, [id_bon_peinture] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'EMEA de l''utilisateur ayant sélectionné les bons pour le transport' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_TRANSPORT', @level2type=N'COLUMN',@level2name=N'id_transport' GO ALTER TABLE [dbo].[DEV_TRANSPORT] WITH CHECK ADD CONSTRAINT [FK_DEV_TRANSPORT_DEV_BON_PEINTURE] FOREIGN KEY([id_bon_peinture]) REFERENCES [dbo].[DEV_BON_PEINTURE] ([id_bon_peinture]) GO ALTER TABLE [dbo].[DEV_TRANSPORT] CHECK CONSTRAINT [FK_DEV_TRANSPORT_DEV_BON_PEINTURE] GO ALTER TABLE [dbo].[DEV_TRANSPORT] WITH CHECK ADD CONSTRAINT [FK_DEV_TRANSPORT_DEV_SENS_TRANSPORT] FOREIGN KEY([id_sens_transport]) REFERENCES [dbo].[DEV_SENS_TRANSPORT] ([id_sens_transport]) GO ALTER TABLE [dbo].[DEV_TRANSPORT] CHECK CONSTRAINT [FK_DEV_TRANSPORT_DEV_SENS_TRANSPORT]
DEV_UTILISATEUR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123 USE [pieces_peintes_db] GO /****** Objet*: Table [dbo].[DEV_BON_PEINTURE] Date de génération du script*: 03/20/2009 10:25:25 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[DEV_BON_PEINTURE]( [id_bon_peinture] [int] IDENTITY(1,1) NOT NULL, [id_fournisseur] [int] NULL, [id_donnee] [int] NULL CONSTRAINT [DF_DEV_BON_PEINTURE_id_donnee] DEFAULT (NULL), [id_type_bon] [int] NULL, [id_etape] [int] NULL, [nom_bon_peinture] [varchar](50) COLLATE French_CI_AS NULL, [date_DEMANDEUR] [datetime] NULL, [codeR3] [varchar](200) COLLATE French_CI_AS NULL, [nombre] [int] NULL, [nombre_pieces_urgentes] [int] NULL, [numBB] [varchar](20) COLLATE French_CI_AS NULL, [teinte] [varchar](200) COLLATE French_CI_AS NULL, [reference] [varchar](200) COLLATE French_CI_AS NULL, [delais] [varchar](200) COLLATE French_CI_AS NULL, [designation_complete] [varchar](200) COLLATE French_CI_AS NULL, [observation_demandeur] [varchar](5000) COLLATE French_CI_AS NULL, [tache] [int] NULL, [precision_TACHE] [varchar](200) COLLATE French_CI_AS NULL, [date_controle_peinture] [datetime] NULL, [codeR3_controle_peinture] [varchar](200) COLLATE French_CI_AS NULL, [controle_peinture] [int] NULL, [observation_controle_peinture] [varchar](5000) COLLATE French_CI_AS NULL, [date_controle_magasin] [datetime] NULL, [codeR3_controle_magasin] [varchar](200) COLLATE French_CI_AS NULL, [controle_magasin] [int] NULL, [stock_magasin] [int] NULL CONSTRAINT [DF_DEV_BON_PEINTURE_stock_magasin] DEFAULT ((0)), [observation_controle_magasin] [varchar](5000) COLLATE French_CI_AS NULL, [date_destinataire_prod] [datetime] NULL, [observation_destinataire_prod] [varchar](5000) COLLATE French_CI_AS NULL, [date_peinture] [datetime] NULL, [codeR3_partie_peinture] [varchar](200) COLLATE French_CI_AS NULL, [delais_previsionnel_peinture] [varchar](200) COLLATE French_CI_AS NULL, [observation_peinture] [varchar](5000) COLLATE French_CI_AS NULL, [temps_passe] [varchar](200) COLLATE French_CI_AS NULL, [date_destinataire] [datetime] NULL, [observation_destinataire] [varchar](5000) COLLATE French_CI_AS NULL, [id_DEMANDEUR] [varchar](50) COLLATE French_CI_AS NULL, [id_CONTROLE_PEINTURE] [varchar](50) COLLATE French_CI_AS NULL, [id_CONTROLE_MAGASIN] [varchar](50) COLLATE French_CI_AS NULL, [id_DESTINATAIRE_PROD] [varchar](50) COLLATE French_CI_AS NULL, [id_PEINTURE] [varchar](50) COLLATE French_CI_AS NULL, [id_DESTINATAIRE] [varchar](50) COLLATE French_CI_AS NULL, [Maj_bon_peinture] [int] NULL, CONSTRAINT [PK_DEV_BON_PEINTURE] PRIMARY KEY CLUSTERED ( [id_bon_peinture] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'information supplémentaire pouvant compléter la partie demandeur : ex COMMANDE BLOQUER 45/55 pour la commande des pièces brutes' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE', @level2type=N'COLUMN',@level2name=N'id_donnee' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'lorsqu''il y a une valeur à saisir pour préciser le choix de la tache' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE', @level2type=N'COLUMN',@level2name=N'precision_TACHE' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'valeur 0 indique que la demande n''est pas conforme, valeur 1 indique que la demande est conforme pour la peinture' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE', @level2type=N'COLUMN',@level2name=N'controle_peinture' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'renseigne la quantité de pièce en stock disponible' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE', @level2type=N'COLUMN',@level2name=N'stock_magasin' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'booleen permettant d''indiquer si un bon est en phase de mise jour 1=> en cour de mise à jour 0 => n''est pas en phase de mise à jour ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE', @level2type=N'COLUMN',@level2name=N'Maj_bon_peinture' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_BON_PEINTURE' GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_DONNEE] FOREIGN KEY([id_donnee]) REFERENCES [dbo].[DEV_DONNEE] ([id_DONNEE]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_DONNEE] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_ETAPE] FOREIGN KEY([id_etape]) REFERENCES [dbo].[DEV_ETAPE] ([id_Etape]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_ETAPE] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_FOURNISSEUR] FOREIGN KEY([id_fournisseur]) REFERENCES [dbo].[DEV_FOURNISSEUR] ([id_Fournisseur]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_FOURNISSEUR] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_TYPE_BON] FOREIGN KEY([id_type_bon]) REFERENCES [dbo].[DEV_TYPE_BON] ([id_TYPE_BON]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_TYPE_BON] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_CONTROLE_MAGASIN] FOREIGN KEY([id_CONTROLE_MAGASIN]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_CONTROLE_MAGASIN] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_CONTROLE_PEINTURE] FOREIGN KEY([id_CONTROLE_PEINTURE]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_CONTROLE_PEINTURE] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DEMANDEUR] FOREIGN KEY([id_DEMANDEUR]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DEMANDEUR] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DESTINATAIRE] FOREIGN KEY([id_DESTINATAIRE]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DESTINATAIRE] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DESTINATAIRE_PROD] FOREIGN KEY([id_DESTINATAIRE_PROD]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_DESTINATAIRE_PROD] GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] WITH CHECK ADD CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_PEINTURE] FOREIGN KEY([id_PEINTURE]) REFERENCES [dbo].[DEV_UTILISATEUR] ([id_UTILISATEUR]) GO ALTER TABLE [dbo].[DEV_BON_PEINTURE] CHECK CONSTRAINT [FK_DEV_BON_PEINTURE_DEV_UTILISATEUR_PEINTURE]
DEV_SECTEUR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 USE [pieces_peintes_db] GO /****** Objet*: Table [dbo].[DEV_UTILISATEUR] Date de génération du script*: 03/20/2009 10:29:36 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[DEV_UTILISATEUR]( [id_UTILISATEUR] [varchar](50) COLLATE French_CI_AS NOT NULL, [id_secteur] [int] NULL, [nom_utilisateur] [varchar](20) COLLATE French_CI_AS NULL, [prenom_utilisateur] [varchar](20) COLLATE French_CI_AS NULL, [adresse_mail_utilisateur] [varchar](30) COLLATE French_CI_AS NULL, CONSTRAINT [PK_UTILISATEUR] PRIMARY KEY CLUSTERED ( [id_UTILISATEUR] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'utilisation de l''EMEA => valeur unique au sein de l''entreprise ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DEV_UTILISATEUR', @level2type=N'COLUMN',@level2name=N'id_UTILISATEUR' GO ALTER TABLE [dbo].[DEV_UTILISATEUR] WITH CHECK ADD CONSTRAINT [FK_DEV_UTILISATEUR_DEV_SECTEUR] FOREIGN KEY([id_secteur]) REFERENCES [dbo].[DEV_SECTEUR] ([id_secteur]) GO ALTER TABLE [dbo].[DEV_UTILISATEUR] CHECK CONSTRAINT [FK_DEV_UTILISATEUR_DEV_SECTEUR]
Jeu de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 USE [pieces_peintes_db] GO /****** Objet*: Table [dbo].[DEV_SECTEUR] Date de génération du script*: 03/20/2009 10:30:25 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[DEV_SECTEUR]( [id_secteur] [int] IDENTITY(1,1) NOT NULL, [num_secteur] [int] NULL, [intitule_secteur] [varchar](500) COLLATE French_CI_AS NULL, CONSTRAINT [PK_SECTEUR] PRIMARY KEY CLUSTERED ( [id_secteur] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF
Euh pour cette étape je ne vois pas bien quoi transmettre .
Car pour pouvoir le tester il y aurait d'autre table qui interviendrai.
Par contre c'est un très bonne exercice professionnel pour moi pour savoir communiquer sur un problème dans une équipe de développement, élément que je ne peux pratiquer sur mon poste actuel étant le seul développeur.
L'objectif de ma requête est de récupérer la liste des id_bon_peintures qui sont de type_bon (1,2,5) à l'id_etape (8,3,5,11) et ayant pour valeur un en_cour_transport = 0
Mon soucis est qu'il retourne aussi les id_bon_peinture des bons ayant un en_cour_transport = 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <> -- Create date: <19/03/2009> -- Description: <Selection des bons en attente d'acheminement par le magasin> -- ============================================= ALTER PROCEDURE [dbo].[DEV_PS_Select_infos_bon_transport_magasin] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT DBP.id_bon_peinture, --pour la gestion des lien et le nommage des checkbox nom_bon_peinture, date_DEMANDEUR, numBB, nom_utilisateur, prenom_utilisateur, num_secteur, depart_sens_transport, arrivee_sens_transport FROM DEV_BON_PEINTURE as DBP INNER JOIN DEV_UTILISATEUR as DU ON DBP.id_DEMANDEUR=DU.id_UTILISATEUR INNER JOIN DEV_SECTEUR as DS ON DU.id_secteur=DS.id_secteur INNER JOIN DEV_TRANSPORT as DT ON DBP.id_bon_peinture=DT.id_bon_peinture INNER JOIN DEV_SENS_TRANSPORT as DST ON DT.id_sens_transport=DST.id_sens_transport WHERE DBP.id_bon_peinture IN ( SELECT DT.id_bon_peinture FROM DEV_TRANSPORT WHERE en_cour_transport = 0 ) AND id_type_bon IN (1,2,5) AND id_etape IN (8,3,5,11) END
J'ai fait un test en isalant ma sous-quête :
et cette dernière me retourne bien la liste des id_bon_peinture ayant un en_cour_transport = 0 .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <> -- Create date: <19/03/2009> -- Description: <function de test de selection de l'id_bon_peinture des bons peinture -- en attente d'acheminement> -- ============================================= ALTER PROCEDURE [dbo].[test_select_bon_attente_transport] -- Add the parameters for the stored procedure here AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT id_bon_peinture FROM DEV_TRANSPORT WHERE en_cour_transport = 0 END
Où ai-je fait une erreur dans ma requête?
en vous remerciant d'avance pour votre aide
Encore merci j'attends tes conseils pour l'envoi de jeu de test.
++
++
Partager