Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: stekor en Marzo 15, 2014, 12:31:44 AM

Título: [SOLUCIONADO] MySQL COUNT de Una tabla basandose en otra tabla
Publicado por: stekor en Marzo 15, 2014, 12:31:44 AM
Hola chicos
Nesecito su ayuda para sacar el COUNT de esto, no se si se pueda
estructuta

TABLA 'seccion'
____________________
|                |                     |
| seccion    |    libro_id     |
|________|___________|
|   A2         |      2              |
|   A2         |     3               |
|   B3         |     4               |
|   B3         |     5               |



TABLA 'libros'
_________________________________
|                |                      |                       |
|      id       |       libro         |        type       |
|________|___________ |___________|
|     2         |       rojo          |   adulto         |
|     3         |Tres enanitos  |   infantil        |
|     4         |     blanca        |   infantil        |
|     5         |     Juanito      |    infantil        |




$seccion = 'B3';
$search = 'blanca';

$libroseccion = ("SELECT * FROM seccion WHERE seccion  = ''.$seccion.''");

$cantida = mysql_query("SELECT COUNT(*) FROM libros WHERE libro  LIKE '%".$search."%' AND type = 'infantil' AND id = '".$libroseccion['libro_id']."'");

o

algo como esto
$cantida = mysql_query("SELECT COUNT(libros.*) FROM libros, seccion WHERE libros.libro LIKE '%".$search."%' AND libros.type = 'infantil' AND seccion.seccion = '".$seccion."'");


algo asi
lo que quiero es que muestrela cantidad(numero) de libros que el nombre contenga la palabra BLANCA  y type sea infantil pero que se encuentre en la seccion B3

si me pudiesen ayudar se los agradeseria mucho, gracias de antemano.
Título: Re:MySQL COUNT de Una tabla basandose en otra tabla
Publicado por: ezephp en Marzo 17, 2014, 09:49:58 AM
la primero variable llamada cantidad, no esta tan errada. La segunda variable si esta errada.

De cualquier forma, te aconsejo que para probar las consultas utilizes directamente mysql, por ejemplo en un phpmyadmin, o si tenes acceso por consola a mysql tambien lo podes probar, se te va a ser mas facil y rapido....

En este momento no tengo acceso a nada para probar y darte la consulta correcta.

Sin embargo fijate si pones solamente esto: SELECT COUNT(*) FROM libros WHERE libro  LIKE '%".$search."%' Primero...Fijate si ahi funciona bien, Si lo pongas en algun sistema de los que te dije remplaza la variable $search por lo que quieras buscar.

Si llega a funcionar.. prueba.. asi... SELECT COUNT(*) FROM libros WHERE (libro  LIKE '%".$search."%') AND (type = 'infantil') AND (id = '".$libroseccion['libro_id']."')

Título: Re:MySQL COUNT de Una tabla basandose en otra tabla
Publicado por: Alex en Mayo 14, 2014, 11:12:02 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
lo que quiero es que muestrela cantidad(numero) de libros que el nombre contenga la palabra BLANCA  y type sea infantil pero que se encuentre en la seccion B3

Lo que tu necesitas es una consulta múltiple, vos queres que de los libros que coincidan con la sección b3, se cuenten aquellos que sean infantil y que cumplan con la busqueda?

1º quiero agregar una cosa, tu tabla está mal hecha, los tipos deberían estar en otra tabla que se llame tipos y usar un id para identificarlos (por cuestiones de normalización), y para unir la tabla de secciones con la de libros necesitarías una tabla intermedia, crearle un id a la seccion y luego un nombre, entonces crear una tabla intermediaria que una ambas. dejando esto de lado te respondo como están las tablas actualmente


SELECT COUNT(l.id) FROM libros AS l WHERE (l.libro  LIKE '%".$search."%') AND (l.type = 'infantil') AND (s.seccion = 'B3') LEFT JOIN seccion AS s ON l.id = s.libro_id


aunque la consulta está bastante rebuscada porque tu estructura de tablas está mal hecha por lo que cuesta hacer una consulta clara, de igual manera debería funcionar.

cualquier cosa me dices.

Saludos!

PD: lamento la tardanza en responder.

PD2: No te olvides de filtrar las variables.

PD3: ten en cuenta que los identificadores son importantes ya que la comparacion de enteros es más rápida y fácil que con caracteres, ten en cuenta que un caracter en mayusculas es distinto de un caracter en minúsculas y eso solo ya puede introducirte en un problema de redundancia de datos.

EDITO:

quizá esta consulta funcione mejor:

SELECT count(l.id) FROM seccion AS s WHERE s.seccion = 'B6' LEFT JOIN libros AS l ON (l.id = s.libro_id) AND (l.libro  LIKE '%".$search."%') AND (l.type = 'infantil')