"SELECT family.* ,charity.charityName FROM family join charity WHERE charity.user_id = family.createdby AND family.streetAddress in (SELECT family.streetAddress FROM family GROUP BY family.city,family.streetAddress HAVING count(*) > 1 AND ) ORDER BY family.streetAddress ASC LIMIT $offset,$limit"
этот запрос дает следующий результат, как показано на рисунке
https://drive.google.com/file/d/0B3RNacAE6rR5Rk8tUUI2Q3B3X3M/view?usp=sharing
синим цветом отмечена проблема записи, которая не должна появиться.
Выше Query перечислите все записи с похожим адресом улицы, но не удалось получить только те записи с похожим адресом && город. Мне нужно получить только те записи, которые имеют тот же город и уличный адрес. есть ли способ применить и логику для группового
Предложение WHERE вашего основного выбора проверяет только соответствующий адрес:
AND family.streetAddress in (....)
который будет соответствовать любому адресу, найденному в вашей подвыборке, даже если он принадлежит не тому городу. Подвыбор в настоящее время возвращает только адрес, но не соответствующий город. Это проблема.
Я не уверен, что это решит вашу проблему, но вы можете попытаться изменить подвыбор во вложенное табличное выражение и сопоставить его как по адресу, так и по городу. Может быть, что-то вроде
SELECT family.* --and other main select stuff
WHERE charity.user_id = family.createdby
AND exists --similar to count(*) > 1
select streetAddress, city
from (
(SELECT family.streetAddress, family.city
FROM family
GROUP BY family.city,family.streetAddress
HAVING count(*) > 1) AS subSelect
)
WHERE family.streetAddress = subSelect.streetAddress
AND family.city = subSelect.city
Других решений пока нет …