webForumDet fria alternativet

Select sats

2 svar · 356 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Sql Server 2005

Har dessa tabeller.

CREATE TABLE [Garage] 
( 
	[Id] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , 
	[Title] [nvarchar] (50) NOT NULL , 
	CONSTRAINT [PK_Garage] PRIMARY KEY CLUSTERED 
	( [Id] ) ON [PRIMARY] 
) ON [PRIMARY] 
go

CREATE TABLE [Truck] 
( 
	[Id] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , 
	[GarageId] [int] NOT NULL ,
	[Title] [nvarchar] (50) NOT NULL , 
	CONSTRAINT [PK_Truck] PRIMARY KEY CLUSTERED 
	( [Id] ) ON [PRIMARY] 
) ON [PRIMARY] 
go  

CREATE TABLE [Driver] 
( 
	[Id] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , 
	[GarageId] [int] NOT NULL ,
	[Title] [nvarchar] (50) NOT NULL , 
	CONSTRAINT [PK_Driver] PRIMARY KEY CLUSTERED 
	( [Id] ) ON [PRIMARY] 
) ON [PRIMARY] 
go  

CREATE TABLE [DriverSpecificTrucks] 
( 
	[DriverId] int NOT NULL PRIMARY KEY(DriverId, TruckId) FOREIGN KEY REFERENCES dbo.Driver(Id),
	[TruckId] int NOT NULL FOREIGN KEY REFERENCES dbo.Truck(Id) 
) 
CREATE INDEX DriverSpecificTrucks_index ON dbo.DriverSpecificTrucks(TruckId)
go

Vad jag vill göra är att ta ut alla trucks för ett visst garage (@garageid). Men vissa trucks är bundna till specifika drivers och får då bara tas ut om driver(@driverid) är rätt och får inte tas ut om de är bundna till någon annan driver.

Hoppas ni förstår? Tack.

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select <kolumner>
  from truck
 where garageID = @garageID
   and (id not in (select truckid 
                     from DriverSpecificTrucks)
    or id in (select truckid 
                from DriverSpecificTrucks
               where driverId = @driverid))
DinoMedlem sedan sep. 20011 914 inlägg
#3

Som vanligt galant. Tack så mycket.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)