Я подключаюсь к SQL Server 2008 с сервера LAMP, используя PDO и библиотеку dblib.
У меня не было проблем при подаче простых запросов.
Но я получаю 102 (синтаксисошибка), когда я отправляю запрос с участием объединения.Тот же запрос выполняется без исключений в MS SQL Server Management Studio, поэтому это не проблема Transact SQL.
Я знаю, что объединения могут использоваться для внедрения SQL, но я немного искал и пока не нашел ни одногоссылка на союзы, не поддерживаемые в dblib.
Вот запрос.У кого-нибудь есть совет или хитрость, которые сделали бы PDO / dblib счастливым?Или лучший способ сделать это?
SELECT DISTINCT
CD.DEMOGRAPHIC_SUBCODE ,
DCD.DEMOGRAPHIC_SUBCODE_DESCR ,
'' AS "CURRENT"
FROM dbo.TABLE1 AS "CD"
LEFT JOIN dbo.TABLE2 AS "DCD" ON ( DCD.CUS_DEMOGRAPHIC_ID = CD.CUS_DEMOGRAPHIC_ID )
WHERE CD.DEMOGRAPHIC_CODE = 'ABCDEFG'
AND CD.USER_D2 IS NULL
AND NOT ( CD.DEMOGRAPHIC_SUBCODE IN (
SELECT DISTINCT
CD1.DEMOGRAPHIC_SUBCODE
FROM dbo.TABLE1 AS "CD1"
WHERE CD1.MASTER_CUSTOMER_ID = '01234567'
AND CD1.SUB_CUSTOMER_ID = '01234567' ) )
UNION
SELECT DISTINCT
CD.DEMOGRAPHIC_SUBCODE ,
DCD.DEMOGRAPHIC_SUBCODE_DESCR ,
'checked' AS "CURRENT"
FROM dbo.TABLE1 AS "CD"
LEFT JOIN dbo.TABLE2 AS "DCD" ON ( DCD.CUS_DEMOGRAPHIC_ID = CD.CUS_DEMOGRAPHIC_ID )
WHERE CD.DEMOGRAPHIC_CODE = 'ABCDEFG'
AND CD.USER_D2 IS NULL
AND CD.MASTER_CUSTOMER_ID = '01234567'
AND CD.SUB_CUSTOMER_ID = '01234567'
ORDER BY DCD.DEMOGRAPHIC_SUBCODE_DESCR ASC
Кстати, я написал запрос таким образом, чтобы избежать двойных записей, когда написано 'флажок'.