PHP PDO / pdlib SQL Server обработка объединения - PullRequest
0 голосов
/ 27 августа 2011

Я подключаюсь к 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

Кстати, я написал запрос таким образом, чтобы избежать двойных записей, когда написано 'флажок'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...