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 OFFSi 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
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
je vais alors obtenir les lignes dont les valeurs de STR_Id et TCS_Till se retrouvent dans la 2e table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part UTL.STR_Id = TCS.STR_ID AND UTL.UTL_Till = TCS.TCS_Till
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.
Partager