Внутреннее объединение, несколько записей с одинаковым идентификатором, неожиданный пустой набор результатов - PullRequest
0 голосов
/ 19 декабря 2011

Запрос ниже возвращает пустой набор результатов. Зачем? Я пытаюсь получить идентификатор 50. Похоже, проблема связана с несколькими операторами AND в конце запроса.

РЕДАКТИРОВАТЬ: Тем не менее, я хочу, чтобы SELECT возвращал идентификатор только в том случае, если ОБА строки существуют в view_layout_rows_columns, а не один или другой.

Table: view_layout_rows

ID    owner    rows
___________________
50    1        2



Table: view_layout_rows_columns

ID    row    columns
___________________
50    1      5
50    2      5


SELECT vlr.id
FROM view_layout_rows vlr
INNER JOIN view_layout_rows_columns vlrc
ON vlr.id = vlrc.id 
WHERE vlr.rows = 2
AND (vlr.owner = 0 OR vlr.owner = 1)
AND (vlrc.row = 1 AND vlrc.columns = 5) 
AND (vlrc.row = 2 AND vlrc.columns = 5)

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 декабря 2011
AND (vlrc.row = 1 AND vlrc.columns = 5) 
AND (vlrc.row = 2 AND vlrc.columns = 5)

Итак, это не противоречит?vlrc.row не может равняться как 1, так и 2. Возможно, вы хотите

AND vlrc.row IN (1,2)
AND vlrc.columns = 5
0 голосов
/ 19 декабря 2011

Он должен всегда возвращать пустой набор результатов из-за этого условия

AND (vlrc.row = 1 AND vlrc.columns = 5) 
AND (vlrc.row = 2 AND vlrc.columns = 5)

значение vlrc.row может быть равно 1 или 2 одновременно.Я думаю, вы хотели сделать что-то вроде этого

AND ((vlrc.row = 1 AND vlrc.columns = 5) 
OR (vlrc.row = 2 AND vlrc.columns = 5))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...