Foros del Web » Programando para Internet » PHP »

Como filtrar consulta mysql de una tabla con los datos de otra

Estas en el tema de Como filtrar consulta mysql de una tabla con los datos de otra en el foro de PHP en Foros del Web. Tengo la tabla "productos" y "stock", deseo realizar una consulta donde me muestre los productos q no tienen stock, en otras palabra deseo mostrar todas ...
  #1 (permalink)  
Antiguo 07/06/2010, 11:34
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Como filtrar consulta mysql de una tabla con los datos de otra

Tengo la tabla "productos" y "stock", deseo realizar una consulta donde me muestre los productos q no tienen stock, en otras palabra deseo mostrar todas los registros de la tabla "productos" menos lo existente en la tabla "stock"
Ambas tablas tienen el identidicado "IdProducto"

esta es mi consulta
Cita:

$sqlTodos="SELECT p.IdProducto FROM productos p,stock a WHERE p.IdProducto!=a.IdProducto";
$ListaStockProd = mysqli_query($link,$sqlTodos);
Pero el resultado es mas de 19 000 registros.
La tabla "productos" solo tiene 4834 y la tabla "stock" 34, por lo tanto la consulta deveria votar: 4800 registros.

Espero sus sugerencias. gracias
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #2 (permalink)  
Antiguo 07/06/2010, 13:01
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 17 años, 2 meses
Puntos: 14
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Si no me equivoco lo que esta haciendo es comparar cada valor de la tabla productos con cada valor de la tabla stock; mi recomendacion seria crea una tabla temporal bien en un archivo en la propia bd, un ejemplo seria:

seleccionas cada id del producto de stock y compruevas si esta en productos si esta no haces nada y pasas al siguiente , si no esta lo añades a una tabla temporal o directamente en la pagina.

si necesitas un mini ejemplo del codigo para verlo mas claro dimelo y lo ponemos aqui para todos los demas.

Un Saludo
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
  #3 (permalink)  
Antiguo 07/06/2010, 13:16
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Gracias pro tu respuesta djsos.
Entiendo la lógica, sin embargo de todas maneras me gustaria un ejemplo de una tabla temporal en Mysql.

Gracias
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #4 (permalink)  
Antiguo 07/06/2010, 13:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 16 años, 1 mes
Puntos: 12
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Seguramente en tu tabla stock tienes un campo cantidad; entonces haces referencia ese

Código PHP:
SELECT p.IdProducto FROM productos p,stock a WHERE p.IdProducto=a.IdProducto and a.cantidad=
Salu2
__________________
No hay mail que por internet no venga
  #5 (permalink)  
Antiguo 07/06/2010, 13:39
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 17 años, 2 meses
Puntos: 14
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Código PHP:
Ver original
  1. <?php
  2. //Obtener los productos de stock
  3. $id_stock = mysql_query("SELECT idprod FROM stock");
  4. //Creacion tabla dinamica
  5. $tabla = "tmp_".date();
  6. mysql_query("CREATE TABLE $tabla (`idprod` ENUM('YES','NO') NOT NULL)");
  7. //Empezamos la comparacion
  8. while($idstock = mysql_fetch_array($id_stock)){
  9. $Comparacion = mysql_query("SELECT idprod FROM productos WHERE idstock = '$idtock'");
  10. if(mysql_num_rows == "1"){
  11. mysql_query("INSERT INTO $tabla (`idprod`) VALUE ('$Comparacion')")
  12. }
  13. }
  14. ?>

No lo he comprobado pero creo que te podria servir, compruebalo y me comentas
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
  #6 (permalink)  
Antiguo 07/06/2010, 14:33
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Gracias djsos, lo probare y te aviso
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #7 (permalink)  
Antiguo 07/06/2010, 21:09
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

No me salio, probe de diferentes formas pero no me convence el resultado.
¿No existirá una forma menos engorrosa de moestras dischos resultados, por ejemplo con un simple consulta?

Saludos
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com
  #8 (permalink)  
Antiguo 07/06/2010, 22:39
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 9 meses
Puntos: 81
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Prueba con esto:
Código:
SELECT IdProducto 
FROM productos 
WHERE IdProducto NOT IN (SELECT IdProducto FROM stock)
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #9 (permalink)  
Antiguo 11/06/2010, 13:56
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años, 6 meses
Puntos: 0
Respuesta: Como filtrar consulta mysql de una tabla con los datos de otra

Marvin, tu consulta me sirvió, me ahorraste muchas horas. Se te agracede.
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com

Etiquetas: filtrar, mysql, tablas
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 14:06.