Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Se puede hacer esta consulta?

Estas en el tema de Se puede hacer esta consulta? en el foro de Mysql en Foros del Web. hola aca de nuevo con su super problema, jeje. tengo unas tablas llamadas salida, articulo y clasificacion. cada articulo pertenece a una clasificacion, y en ...
  #1 (permalink)  
Antiguo 15/10/2009, 17:26
Avatar de Gious  
Fecha de Ingreso: septiembre-2006
Mensajes: 122
Antigüedad: 17 años, 7 meses
Puntos: 0
De acuerdo Se puede hacer esta consulta?

hola
aca de nuevo con su super problema, jeje.

tengo unas tablas llamadas salida, articulo y clasificacion. cada articulo pertenece a una clasificacion, y en la tabla articulo solo guardo la id de la clasificacion, tengo una tabla salida donde se va generando todas las salidas de los articulos y en esa tabla se hace referencia al articulo por medio de su id osea que solo se guarda la id del articulo.
como nos podemos dar cuenta tabla salida no tiene ninguna relacion con la tabla clasificacion.

lo que quiero hacer es lo siguiente: hacer una consulta en la cual me muestre todos los articulos que salieron de una clasificacion determinada.

ayudeme por favor si no se puede hacer hagamelo saber y ya me olvido de ello. es lpracticamente lo ultimo que me falta de mi pequeña aplicacion.
saludos cordiales.
__________________
El futuro es hoy Aprende Linux. Guadalinex,
  #2 (permalink)  
Antiguo 16/10/2009, 02:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Se puede hacer esta consulta?

Articulo
id
nombre
idClas
...

Clasificacion
id
descripcion
...

Salida
id
idArt
cantidad
fecha
...

Código sql:
Ver original
  1. SELECT sal.id, sal.fecha, art.id, art.nombre
  2. FROM (salida sal
  3.           LEFT JOIN articulo art
  4.                   ON sal.idart=art.id)
  5.           LEFT JOIN clasificacio clas
  6.                   ON art.idClas=clas.id
  7. WHERE clas.id=1


Con eso tendrias los articulos que salieron de la clasificacion 1 por fechas....


Código sql:
Ver original
  1. SELECT art.id, art.nombre, SUM(sal.cantidad) salidas
  2. FROM (salida sal
  3.           LEFT JOIN articulo art
  4.                   ON sal.idart=art.id)
  5.           LEFT JOIN clasificacio clas
  6.                   ON art.idClas=clas.id
  7. WHERE clas.id=1
  8.              AND sal.fecha>='2009-01-01'
  9. GROUP BY art.id, art.nombre

Esta nos da las cantidades salidas en lo que va de año...tambien de articulos de las clasificación 1

Los articulos que no tengan salidas NO estaran en el listado... para que salgan solo tendrias que leer sobre LEFT JOIN ...


Quim

Última edición por quimfv; 16/10/2009 a las 02:47
  #3 (permalink)  
Antiguo 19/10/2009, 16:29
Avatar de Gious  
Fecha de Ingreso: septiembre-2006
Mensajes: 122
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Se puede hacer esta consulta?

Código sql:
Ver original
  1. SELECT sal.id, sal.fecha, art.id, art.nombre
  2. FROM (salida sal
  3.           LEFT JOIN articulo art
  4.                   ON sal.idart=art.id)
  5.           LEFT JOIN clasificacio clas
  6.                   ON art.idClas=clas.id
  7. WHERE clas.id=1



hola amigo una pregunta porque le agregas "sal", para que sirve o que funcionalidad tiene
__________________
El futuro es hoy Aprende Linux. Guadalinex,
  #4 (permalink)  
Antiguo 19/10/2009, 16:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Se puede hacer esta consulta?

Es un ALIAS para la tabla. Los alias permiten referirnos a una tabla sin tener que invocar su nombre completo, e incluso nos siven para invocar dos veces la tabla en el mismo JOIN para ciertas operaciones (por ejemplo, el nombre de las localidades de origen y destino de un ticket de viaje; no puedes usar la misma tabla para buscar los ID que figuran en el boleto al mismo tiempo, a menos que la invoques dos veces, una para cada ID: En ese caso se usan alias).
Los alias se pueden crear sobre nombres de campos, tablas y bases, y hacen más simple la redacción.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 19/10/2009, 16:37
Avatar de Gious  
Fecha de Ingreso: septiembre-2006
Mensajes: 122
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Se puede hacer esta consulta?

muchas gracias gnzsoloyo,
__________________
El futuro es hoy Aprende Linux. Guadalinex,
  #6 (permalink)  
Antiguo 19/10/2009, 17:36
Avatar de Gious  
Fecha de Ingreso: septiembre-2006
Mensajes: 122
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Se puede hacer esta consulta?

Hola. ya hize la consulta con el esquema que me proporcionaron, pero no me da el resultado deseado. la aplicacion funciona asi. al cargarse se hace una consulta a la BD, y se crea un combo box con todas las clasificaciones disponible. luego el usuario puede selecionar una de esas clasificaciones para poder listar todos los articulos que salieron y que pertenecen a esa familia. entonces el valor selecionado se pasa a una variable se buscar en la tabla clasificacion cual es la id de la clasificacion seleccionada y con esa id realizar la consulta, como iria la consulta ya que la id se guarda en una variable llamada idc (id de la clasificacion seleccionada.) ayudeme por favor
__________________
El futuro es hoy Aprende Linux. Guadalinex,
  #7 (permalink)  
Antiguo 20/10/2009, 00:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Se puede hacer esta consulta?

Código php:
Ver original
  1. "SELECT art.id, art.nombre ".
  2. "FROM (salida sal ".
  3. "         LEFT JOIN articulo art ".
  4. "                  ON sal.idart=art.id) ".
  5. "          LEFT JOIN clasificacio clas ".
  6. "                  ON art.idClas=clas.id ".
  7. "WHERE clas.id=".$idc

Si usas php ... Yo crearia el combo con el id en value y el nombre en el texto de la opció, así te ahorras de buscar el id seleccionado....

Quim
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:01.