SQL-запрос не имеет смысла для меня - PullRequest
0 голосов
/ 27 января 2012

Я думаю, что мое предложение where неверно.

Моя дилемма в том, что если у пользователя нет записи в tbl_dentalBuyerInsurance, это означает, что он принимает все это.

Так что, если пользователь donУ меня нет записи в tbl_dentalBuyerInsurance. Я хочу, чтобы они вернулись в результате.Я также хочу, чтобы они вернулись, если у них есть запись в tbl_dentalBuyerInsurance, и она совпадает с использованием LIKE или равно.

SELECT
[dbo].[tbl_users].*, [dbo].[tbl_dentalBuyerInsurance].*
     FROM
[dbo].[tbl_users]
    LEFT OUTER JOIN [dbo].[tbl_dentalBuyerInsurance] ON [dbo].[tbl_dentalBuyerInsurance].buyerId = [dbo].[tbl_users].id
    LEFT OUTER JOIN [dbo].[tbl_dentalInsurance] ON [dbo].[tbl_dentalInsurance].id = [dbo].[tbl_dentalBuyerInsurance].dentalInsuranceId
    WHERE
(
    (
        [dbo].[tbl_dentalInsurance].companyName LIKE '%Cigna%'
        OR [dbo].[tbl_dentalInsurance].companyName = ''
    )
    AND(
        [dbo].[tbl_dentalBuyerInsurance].ppo = 1
        OR [dbo].[tbl_dentalBuyerInsurance].ppo = ''
    )
    AND(
        [dbo].[tbl_dentalBuyerInsurance].hmo = 0
        OR [dbo].[tbl_dentalBuyerInsurance].hmo = ''
    )
)

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Если вы используете ЛЕВЫЕ СОЕДИНЕНИЯ, если в «правой» части объединения нет соответствующих записей, все эти правые поля будут NULL, а не пустыми строками.Вы должны явно проверить это с помощью .... OR whatever IS NULL, поскольку NULL никогда не может быть равен чему-либо, включая себя.

1 голос
/ 27 января 2012
[dbo].[tbl_dentalInsurance].companyName LIKE '%Cigna%'
        OR [dbo].[tbl_dentalInsurance].companyName = ''

это означает, что вы допускаете пустые строки, это ваша первая ошибка, и как сказал MarcB, если вы ищете нулевые значения, поэтому запрос:

[dbo].[tbl_dentalInsurance].companyName LIKE '%Cigna%'
        OR [dbo].[tbl_dentalInsurance].companyName is null

, если вы разрешаете пустыестрока, поэтому вы должны использовать функцию len для проверки значений с длиной 0

saludos

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