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 :
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_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
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_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
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_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
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]
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
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
Jeu de test :

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

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
Mon soucis est qu'il retourne aussi les id_bon_peinture des bons ayant un en_cour_transport = 1.

J'ai fait un test en isalant ma sous-quête :

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
et cette dernière me retourne bien la liste des id_bon_peinture ayant un en_cour_transport = 0 .

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.

++

++