Foros del Web » Programando para Internet » PHP »

Por favoooorrr ayudenme con esta query!!

Estas en el tema de Por favoooorrr ayudenme con esta query!! en el foro de PHP en Foros del Web. La verdad llevo horas tratando de resolver lo siguiente y aún nadie me ha podido ayudar. Aqui voy: Tengo dos tablas: tipoproducto y productos. En ...
  #1 (permalink)  
Antiguo 08/11/2009, 18:05
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 8 meses
Puntos: 4
Pregunta Por favoooorrr ayudenme con esta query!!

La verdad llevo horas tratando de resolver lo siguiente y aún nadie me ha podido ayudar.
Aqui voy:

Tengo dos tablas:

tipoproducto y productos.

En la primera guardo los tipos de producto, o sea:

idtipo = 1
tipo = Ampolletas

idtpo = 2
Tipo = Tornillos

y en la tabla productos:

idpro = 1
idtipo = 1
nombre = Ampolletas 50 Watts

idpro = 2
idtipo = 1
nombre = Ampolletas 100 Watts

idpro = 3
idtipo = 1
nombre = Ampolletas 120 Watts

idpro = 2
idtipo = 2
nombre = Tornillos de 20x10x50

...correcto?

En entonces, lo que necesito es hacer la consulta a la tabla tipoproducto y que me arroje:

Para Apolletas existen 3 productos
Para Torinillos existen 1 Producto.


y así sucesivamente en la medida que ingrese más tipos de productos en la tabla tipoproductos y más productos en la tabla productos. Los datos ya los tengo almacenados, sólo me falta lograr lo que les explique.

Ojala alguien me ayude y me indíque como debe ser esa query
mil gracias!!
  #2 (permalink)  
Antiguo 08/11/2009, 18:33
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Por favoooorrr ayudenme con esta query!!

Código PHP:
<?php

//conexion a la base
$base="tu_base";
$conectar=mysql_connect("localhost","root","");
$exito=mysql_select_db($base,$conectar);

//consulta
$sql="select * from productos where nombre like '%apolletas%';";
$consulta=mysql_query($sql,$conectar);

$filas=mysql_num_rows($consulta);

echo 
"Para Ampolletas existen ".$filas."productos";

?>
Idem para los tornillos
  #3 (permalink)  
Antiguo 08/11/2009, 18:44
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Por favoooorrr ayudenme con esta query!!

Gracias jackson666, pero tu consulta es solamente a una tabla....¿?
y según yo la consulta debe se a ambas tablas. Y por que
like '%ampolletas%' ??

No pretendo un buscador.
  #4 (permalink)  
Antiguo 08/11/2009, 18:48
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Por favoooorrr ayudenme con esta query!!

me imagino que la consulta debe ser a ambas tablas para poder obtener como resultado lo que comentaba yo al proncipio

La consulta sql a la tabla tipoproductos y productos debería arrojar:

Para Apolletas existen 3 productos
Para Torinillos existen 1 Producto.

...eso.
  #5 (permalink)  
Antiguo 08/11/2009, 19:28
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Por favoooorrr ayudenme con esta query!!

Hola,

Posiblemente podrías usar algo así:

Código:
SELECT
	a.idtipo,
	a.tipo,
	COUNT(b.idpro) AS cuentaProducto
FROM
	tipoproducto a LEFT JOIN productos b ON a.idtipo = b.idtipo
WHERE
	...
GROUP BY
	a.idtipo, a.tipo
En el caso de MySQL no es obligatorio colocar todos los campos en el GROUP BY, solamente a.idtipo ¿? , en este caso te va a mostrar todos los tipos de productos aunque no tengan productos; por el left join, y en cuentaProducto va a ser 0 o null.

Saludos,

Última edición por HackmanC; 08/11/2009 a las 19:41 Razón: la consulta estaba alreves :-D
  #6 (permalink)  
Antiguo 08/11/2009, 22:29
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Por favoooorrr ayudenme con esta query!!

Yo propuse eso, porque en el nombre no dice exactamente "ampolletas" sino que dice "ampolletas 50 watts" etc...

Lo que deberias hacer es consultar la tabla tipoproductos en la columna "tipo" y guardar eso en una variable (por ejemplo $var), y dsps hacer otra consulta, a la otra tabla y poner "..... where nombre like '%$var%'; Y luego repetir ese proceso..

Creo que deberia ser asi:

Código PHP:
<?php
//conexion a la base
$base="tu_base";
$conectar=mysql_connect("direccion","user","pass");
$select=mysql_select_db($base,$conectar);

//consulta a tipoproductos
$sql="select tipo from tipoproducto;";
$consulta=mysql_query($sql,$conectar);

while(
$nombre=mysql_fetch_row($consulta)){
    for(
$i=0;$i<count($nombre);$i++){

//consulta a productos
$sql2="select * from productos where nombre='$nombre[$i]';";
$consulta2=mysql_query($sql2,$conectar);

echo 
"Para ".$nombre[$i]." existen ".($i+1)." Producto. <br />";    
}
}

?>
Espero que te sirva, suertee

Última edición por jackson666; 08/11/2009 a las 23:43
  #7 (permalink)  
Antiguo 09/11/2009, 01:02
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Por favoooorrr ayudenme con esta query!!

Hola,

Habrá que esperar para averiguar si 'yole' necesitaba extraer de la primera tabla o de la segunda, o de la unión de ambas.

Cita:
Iniciado por jackson666 Ver Mensaje
Yo propuse eso, porque en el nombre no dice exactamente "ampolletas" sino que dice "ampolletas 50 watts" etc...
No importa que el campo diga "Ampolletas 50000 watts", el campo idtipo es el que une las dos tablas.

Cita:
Iniciado por yole Ver Mensaje
En la primera guardo los tipos de producto, o sea:

idtipo = 1 <-- Primary Key !
tipo = Ampolletas

idtpo = 2
Tipo = Tornillos

Para Apolletas existen 3 productos
Para Torinillos existen 1 Producto.
Cita:
Iniciado por yole Ver Mensaje
me imagino que la consulta debe ser a ambas tablas para poder obtener como resultado lo que comentaba yo al proncipio
Saludos,

Última edición por HackmanC; 09/11/2009 a las 01:19 Razón: ordenar
  #8 (permalink)  
Antiguo 09/11/2009, 01:39
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Por favoooorrr ayudenme con esta query!!

Hola,

Posiblemente así está mas claro:

Código PHP:
<?php
$cn 
mysql_connect('127.0.0.1''root''pass'); # <- Cambiar servidor, usuario y password
mysql_select_db('Joomla');                        # <- Cambiar base de datos

$rs mysql_query(mysql_real_escape_string(
    
'select a.idtipo, a.tipo, count(b.idpro) cuentaProducto
     from tipoproducto a left join productos b on a.idtipo = b.idtipo
     group by a.idtipo, a.tipo'
), $cn);

while (
$row mysql_fetch_array($rs)) {
    echo 
$row['idtipo'] . '->' $row['tipo'] . '->' $row['cuentaProducto'] . '<br />'
}

mysql_free_result($rs);
mysql_close($cn);
?>
Saludos,
  #9 (permalink)  
Antiguo 09/11/2009, 05:25
 
Fecha de Ingreso: julio-2007
Mensajes: 287
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: Por favoooorrr ayudenme con esta query!!

HackmanC Maestro! por fin!!!
Muchas gracias has logrado justo lo que necesitaba.
Mil gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:50.