Выберите аналогичные записи адресов на основе трех значений столбцов (city + streetaddress + state) и операции соединения в mysql

"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 перечислите все записи с похожим адресом улицы, но не удалось получить только те записи с похожим адресом && город. Мне нужно получить только те записи, которые имеют тот же город и уличный адрес. есть ли способ применить и логику для группового

2

Решение

Предложение 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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]