Проверка нескольких строк друг против друга в MySQL - PullRequest
0 голосов
/ 19 августа 2011

У меня есть таблица зданий с различной информацией, относящейся к ним, например address, building_id и т. Д.

У меня также есть таблица отчетов, содержащая все, что может быть не так с любым из этих зданий. (Эта таблица огромна, поскольку каждый отчет выводится здесь.) Каждый отчет имеет статус 0 = закрыто или 1 = активно. Примечание: building_id также есть в каждой записи, поэтому ее можно связать таким образом.

Последняя часть состоит в том, что человек вошел в систему с идентификатором, который контролирует, с каких зданий он начинает видеть.

Что я хочу сделать, так это составить список зданий, имеющих открытые отчеты. Сейчас он настроен на выполнение запроса, чтобы получить все здания с user_id; затем выполните запрос, чтобы получить все открытые отчеты.

У меня было такое мышление:

SELECT *
FROM buildings
WHERE user_id = $currentUser AND (SELECT * FROM reports WHERE building_id = $buildingID and (count reports > 0))

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Без дополнительных знаний о вашей схеме ... попробуйте что-то вроде:

SELECT * FROM buildings WHERE user_id = $currentUser AND building_id IN 
(SELECT distinct building_id FROM reports WHERE status = 1)
0 голосов
/ 19 августа 2011

Вы можете сделать INNER JOIN:

SELECT b.*
FROM buildings b
INNER JOIN (SELECT DISTINCT building_id FROM reports WHERE status = 1) r
ON B.building_id = r.building_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...