Problemer med Exists i Query efter migrering fra Access til MSSQL
En query som skal vise dagens tider for en frisør - både tagne og ikke tagne giver problemer i MS SQL efter at have funket upåklageligt:Hele querien ser sådan ud efter at være converteret til MS SQL mht dato:
SELECT TOP 100 PERCENT F.FrisoerName, BD.FrisoerID, C.CompanyName, BD.BookingDateCompanyID, BD.BookingDateID, BT.BookingTimeName,
BT.BookingTimeID, BT.BTType,
Exists
(SELECT B.BookingBookingDateID, B.BookingBookingTimeID FROM Booking AS B WHERE (((B.BookingBookingDateID)=BD.BookingDateID) AND B.BookingBookingTimeID= BT.BookingTimeID) ORDER BY B.BookingBookingTimeID; ) AS Taget
FROM dbo.Company AS C INNER JOIN
dbo.BookingTime AS BT INNER JOIN
dbo.BookingDate AS BD LEFT OUTER JOIN
dbo.Frisoer AS F ON BD.FrisoerID = F.FrisoerID ON BT.BTType = BD.BTType ON C.CompanyID = BD.BookingDateCompanyID
WHERE (BD.BookingDateCompanyID = 19) AND (CONVERT(CHAR(8), BD.BookingDateDate, 112) = '20061223') AND (BD.noview = 0)
ORDER BY F.FrisoerName, BD.BookingDateDate, BT.BookingTimeName
fjerner jeg, det skal give en bool om hvorvidt en tid er taget:
Exists
(SELECT B.BookingBookingDateID, B.BookingBookingTimeID FROM Booking AS B WHERE (((B.BookingBookingDateID)=BD.BookingDateID) AND B.BookingBookingTimeID= BT.BookingTimeID) ORDER BY B.BookingBookingTimeID; ) AS Taget
virker det upåklageligt sql 2005, men hvad er galt med denne linie i sql 2005 men virker i Access ?
Er det fordi SQL 2005 løser querien på en anden måde, så den ikke forstår at BD og BT er tabeller i den ydre query. Eller er det den dobbelte binding ?
Fejlmeddelelsen er incorrect syntex near ekywords exists / order