Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/01/2018, 10:28
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como hacer que en un select aparezcan datos según criterios

Necesitas hacer una consulta extra en la tabla "pokemon" en la cual, mediante una instrucción [inline]JOIN[inline], buscarás a los registros de la tabla "trainer" asociados con los registros de la tabla "pokemon" cuya cantidad total de apariciones en dicha tabla sea menor a seis.

Código MySQL:
Ver original
  1.     a.nombre_entrenador AS entrenador,
  2.     COUNT(b.id_entrenador) AS total
  3. FROM trainer a
  4. LEFT JOIN pokemon b
  5. ON a.id_entrenador = b.fk_id_entrenador
  6. GROUP BY b.fk_id_entrenador
  7. HAVING COUNT(b.fk_id_entrenador ) < 6

En las dos últimas líneas es en donde está lo principal. Primero, se agrupan a los registros de la tabla "pokemon" por el valor del campo "fk_id_entrenador"; es decir, se reúne a los registros de la tabla "pokemon" asociados al mismo registro de la tabla "trainer". Finalmente, ya que la sentencia condicional WHERE no permite usar funciones de agrupación (como COUNT), opto por la cláusula HAVING que sí lo permite.

En este ejemplo, estoy asumiendo que la tabla "trainer" tiene un campo "id_entrenador" como llave primaria, que es el código único de cada registro de dicha tabla; además, en la tabla "pokemon" debe haber un campo como llave foránea que sea el que asocie a ambas tablas. De no ser así, tendrás que modificar tus tablas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand