У меня возникли проблемы с запросом MySQL.MySql поиск с двумя таблицами, одна таблица только для подсчета
Запрос выполняется из двух таблиц. Обе таблицы содержат данные, но мне нужно только подсчет (*) из второй таблицы.
SELECT m.*, (SELECT COUNT(*) FROM cd_members_offers WHERE mo.mo_member_id = m.m_id) as mo_count
FROM cd_members m, cd_members_offers mo
/* these are variables and don't always exist */
WHERE (m.m_fname LIKE '%Richie%' OR m.m_lname LIKE '%Richie%' OR m.m_email LIKE '%Richie%')
AND (m.m_signupdate >= 20130807 AND m.m_signupdate <= 20130810)
AND m.m_add_state = 'QLD'
AND (mo_count >= '2' AND mo_count <= '5')
/* this is the end of the variables */
AND mo.mo_member_id = m.m_id
ORDER BY m.m_id ASC
// quotes */на самом деле нет в коде. Я просто хотел показать, как запрос может потенциально выглядеть, если все переменные введены.
У меня возникла проблема сначала, когда появилось много дубликатов. Я также вполне уверен, что mo_count> = не правильный способ сделать это.
Я все еще играю с кодом и делаю еще больше исследований, но если кто-то сможет сэкономить несколько часов, я бы очень признателен.
Спасибо, Петер, ваш ответ был очень быстрым. Это работает достаточно хорошо, если пользователи не имеют 0 mo_count, они не отображаются в таблице. Я никогда раньше не использовал предложение «HAVING», поэтому я очень новичок в этом отношении. Приветствую вас за помощь Петер, это очень ценно. – user2663289
@ user2663289 См. Обновленный ответ и sqlfiddle – peterm
Иногда мне нужно использовать mo_count, даже когда мне нужно отображать пользователей со счетом 0. Например AND '(mo_count> = '0' AND mo_count <= '2')' Вы все еще используете предложение HAVING? – user2663289