Bonjour,

Comment obtenir le contraire de que l'on obtient avec un inner join ?

Vu que je ne crois pas être clair, voilà du concret...

Tout d'abord, mes deux tables :

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
USE [Tickets]
GO
/****** Object:  Table [dbo].[tblSalesUsedTill]    Script Date: 05/31/2012 15:35:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tblSalesUsedTill](
	[UTL_Id] [int] IDENTITY(1,1) NOT NULL,
	[STR_Id] [char](3) NOT NULL,
	[UTL_Till] [int] NOT NULL,
	[UTL_Start] [datetime] NOT NULL,
	[UTL_End] [datetime] NULL,
	[UTL_CreatedBy] [varchar](100) NULL CONSTRAINT [DF_tblSalesUsedTill_UTL_CreatedBy]  DEFAULT (suser_sname()),
	[UTL_CreatedOn] [datetime] NULL CONSTRAINT [DF_tblSalesUsedTill_UTL_CreatedOn]  DEFAULT (getdate()),
	[UTL_ModifiedBy] [varchar](100) NULL,
	[UTL_ModifiedOn] [datetime] NULL,
 CONSTRAINT [PK_tblVenteCaisse] PRIMARY KEY NONCLUSTERED 
(
	[UTL_Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [NDX]
) ON [PRIMARY]
 
GO
SET ANSI_PADDING OFF
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
USE [Tickets]
GO
/****** Object:  Table [dbo].[tblSalesTillClosure]    Script Date: 05/31/2012 15:35:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tblSalesTillClosure](
	[TCS_Id] [int] IDENTITY(1,1) NOT NULL,
	[STR_Id] [char](3) NOT NULL,
	[TCS_Date] [datetime] NOT NULL,
	[TCS_Till] [int] NOT NULL,
	[TCS_Amount] [decimal](6, 2) NOT NULL,
	[TCS_CreatedBy] [varchar](100) NULL CONSTRAINT [DF_tblSalesTillClosure_TCS_CreatedBy]  DEFAULT (suser_sname()),
	[TCS_CreatedOn] [datetime] NULL CONSTRAINT [DF_tblSalesTillClosure_TCS_CreatedOn]  DEFAULT (getdate()),
	[TCS_ModifiedBy] [varchar](100) NULL,
	[TCS_ModifiedOn] [datetime] NULL,
 CONSTRAINT [PK_tblSalesTillClosure] PRIMARY KEY CLUSTERED 
(
	[TCS_Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
 
GO
SET ANSI_PADDING OFF
Si je fais une requête sur tblSalesTillClosure avec un inner join vers l'autre table avec comme critère de jointure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UTL.STR_Id = TCS.STR_ID AND UTL.UTL_Till = TCS.TCS_Till
je vais alors obtenir les lignes dont les valeurs de STR_Id et TCS_Till se retrouvent dans la 2e table.

Or, je cherche à avoir pile l'inverse (l'opposé ?). C'est-à-dire les lignes dont les valeurs de ces 2 colonnes ne se retrouvent pas dans la 2e table.

Y a-t-il une manière spécifique d'écrire la jointure pour faire ce genre de chose ou bien dois-je écrire une requête en utilisant l'opérateur EXCEPT ?

J'imagine que je devrais y arriver plus ou moins facilement avec except mais j'ai le sentiment que c'est pas la meilleure manière.

Kropernic.