的情況我有三個表2008數據庫按照我的SQL Server:加入一個表(或沒有)的基礎上在SQL
- 汽車
- 驅動程序
- UnavailableDrivers
我想要的是在最終用戶設置@isAvailable = 0時顯示不可用的驅動程序。另一方面,如果isAvailable = 1,那麼最終用戶應該只能看到可用的驅動程序。最後,如果isAvailable爲NULL,那麼用戶應該看到所有的驅動程序。
declare @isAvailable bit;
我需要寫一個這樣的查詢:
Select *
From Cars c
Inner join Drivers d on (c.driverId = d.Id)
CASE
WHEN @isAvailable = 0 THEN inner join UnavailableDrivers uc on (c.driverId= uc.Id)
WHEN @isAvailable = 1 THEN inner join UnavailableDrivers uc on (c.driverId != uc.Id)
ELSE @IsAvailable END
-- ELSE -> basically DO NOT JOIN UnavailableDrivers
這是給不正確的語法錯誤,我無法找到不幸數小時正確的語法。其實我也不覺得這個問題是正確的。所以任何幫助解決我的查詢在這個邏輯將不勝感激!
選擇 從轎車Ç LEFT JOIN驅動器D1 ON c.DriverId = d.DriverId LEFT JOIN不可用驅動程序u ON u.DriverId = c.DriverId – chdev77
you will我需要通過動態SQL應用邏輯 –