MySQL присоединяется и COUNT (*) из другой таблицы
Вопрос
У меня есть две таблицы: groups
и group_members
.
Таблица общих кодов тегов содержит всю информацию для каждой группы, такую как ее идентификатор, заголовок, описание и т. д.
В таблице общих кодовых кодов перечислены все члены, которые не входят в каждую группу следующим образом:
родовое слово По сути, я хочу перечислить ТРИ группы на странице, и я хочу перечислить только те группы, в которых БОЛЕЕ четырех участников.Затем внутри цикла groups
мне нужны четыре члена, не входящие в эту группу.У меня нет проблем со списком групп и перечислением участников в другом внутреннем цикле, я просто не могу уточнить группы, чтобы отображались ТОЛЬКО те, у которых более 4 участников.
Кто-нибудь знает, как это сделать?Я уверен, что это с MySQL присоединяется.
Решение
MySQL использует для этих задач инструкцию HAVING .
Ваш запрос будет выглядеть так:
родовое словопример, когда ссылки имеют разные имена
родовое словоТакже убедитесь, что вы установили индексы в схеме базы данных для ключей, которые вы используете в JOINS, поскольку это может повлиять на производительность вашего сайта.
Другие советы
В вашей таблице groups_main
есть ключевой столбец с именем id
.Я считаю, что вы можете использовать синтаксис USING
для соединения только в том случае, если в таблице groups_fans
есть ключевой столбец с тем же именем, чего, вероятно, нет.Вместо этого попробуйте следующее:
LEFT JOIN groups_fans AS m ON m.group_id = g.id
Или замените group_id
на любое соответствующее имя столбца в таблице groups_fans
.
Может быть, я здесь ошибаюсь и не понимаю OP, но почему вы присоединяетесь к таблицам?
Если у вас есть таблица с элементами, и в этой таблице есть столбец с именем «group_id», вы можете просто запустить запрос к таблице элементов, чтобы получить количество элементов, сгруппированных по group_id.
родовое словоЭто должно иметь наименьшие накладные расходы просто потому, что вы избегаете соединения, но все же должно дать вам то, что вы хотели.
Если вам нужны подробные сведения о группе, ее описание и т. д., добавьте объединение из таблицы участников обратно в таблицу групп, чтобы получить имя, и это даст вам самый быстрый результат.