varias unir tablas tabla relacionadas misma inner hacer example diferentes consultas consultar consulta como mysql count group-by left-join having

unir - MySQL se une y CUENTA(*) desde otra tabla



unir dos consultas sql misma tabla (4)

Tal vez estoy fuera de lugar aquí y no entiendo el OP, pero ¿por qué te unes a las mesas?

Si tiene una tabla con miembros y esta tabla tiene una columna llamada "group_id", puede ejecutar una consulta en la tabla de miembros para obtener un recuento de los miembros agrupados por group_id.

SELECT group_id, COUNT(*) as membercount FROM members GROUP BY group_id HAVING membercount > 4

Esto debería ser lo menos costoso simplemente porque estás evitando una unión pero aún así debes darte lo que deseas.

Si desea los detalles y la descripción del grupo, etc., agregue una combinación de la tabla de miembros de nuevo a la tabla de grupos para recuperar el nombre que le daría el resultado más rápido.

Tengo dos tablas: groups y group_members .

La tabla de groups contiene toda la información para cada grupo, como su ID, título, descripción, etc.

En la tabla group_members , enumera todos los miembros que están separados de cada grupo de esta manera:

group_id | user_id 1 | 100 2 | 23 2 | 100 9 | 601

Básicamente, quiero enumerar TRES grupos en una página, y solo quiero enumerar los grupos que tienen MÁS de cuatro miembros. Dentro del ciclo <?php while ?> , Quiero cuatro miembros que estén separados de ese grupo. No tengo problemas para enumerar los grupos y listar los miembros en otro ciclo interno, simplemente no puedo refinar los grupos para que solo aparezcan los que tienen más de 4 miembros.

¿Alguien sabe cómo hacer esto? Estoy seguro de que es con las uniones de MySQL.


Su tabla groups_main tiene una columna clave llamada id . Creo que solo puede usar la sintaxis de USING para la unión si la tabla groups_fans tiene una columna de clave con el mismo nombre, que probablemente no lo haga. Entonces, en cambio, intente esto:

LEFT JOIN groups_fans AS m ON m.group_id = g.id

O reemplace group_id con el nombre de columna apropiado en la tabla groups_fans .


MySQL usa la instrucción HAVING para estas tareas.

Su consulta se vería así:

SELECT g.group_id, COUNT(m.member_id) AS members FROM groups AS g LEFT JOIN group_members AS m USING(group_id) GROUP BY g.group_id HAVING members > 4

ejemplo cuando las referencias tienen diferentes nombres

SELECT g.id, COUNT(m.member_id) AS members FROM groups AS g LEFT JOIN group_members AS m ON g.id = m.group_id GROUP BY g.id HAVING members > 4

Además, asegúrese de establecer índices dentro del esquema de la base de datos para las claves que está utilizando en UNIRSE, ya que puede afectar el rendimiento de su sitio.


SELECT DISTINCT groups.id, (SELECT COUNT(*) FROM group_members WHERE member_id = groups.id) AS memberCount FROM groups