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

Ayuda con una consultita de SQL

Estas en el tema de Ayuda con una consultita de SQL en el foro de Bases de Datos General en Foros del Web. Hola soy nuevo en esto y pues me han mandado ha hacer una consulta de la siguiente manera, teniendo las sig tablas. Tiendas -------- ID ...
  #1 (permalink)  
Antiguo 22/02/2005, 04:16
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 22 años
Puntos: 0
Ayuda con una consultita de SQL

Hola soy nuevo en esto y pues me han mandado ha hacer una consulta de la siguiente manera, teniendo las sig tablas.


Tiendas
--------
ID
Nombre
Zona

Bodegas
--------
ID
Nombre

Productos
-------
ID
Nombre
Precio
Cantidad

Ventas
-------
IDtienda
IDbodega
IDproducto
Cantidad

ahora lo que me piden es sacar cual(es) tienda(s) le han comprado a TODOS las bodegas (eso se sacaria de la tabla de ventas), pero no tengo ni idea de como hacerlo

seria algo como

SELECT ventas.IDtienda * form VENTAS WHERE ...? (que tendria que poner aqui

Vamos una maito porfa que estoy bastante confundido, sera acaso que hay que usar un select anidado o un IN
__________________
Siempre hay algo nuevo que aprender
  #2 (permalink)  
Antiguo 22/02/2005, 05:39
 
Fecha de Ingreso: septiembre-2004
Ubicación: Valencia
Mensajes: 39
Antigüedad: 20 años, 2 meses
Puntos: 0
Te paso la idea, selecciona las tiendas de Ventas donde la cuenta de las distintas Idbodega de Ventas para cada Idtienda sea igual a la cuenta total de las Bodegas.ID
  #3 (permalink)  
Antiguo 24/02/2005, 18:35
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 22 años
Puntos: 0
[q]Te paso la idea, selecciona las tiendas de Ventas donde la cuenta de las distintas Idbodega de Ventas para cada Idtienda sea igual a la cuenta total de las Bodegas.ID[/q]

Bueno en realidad trate pero nada use esto

SELECT IDtienda FROM ventas, bodegas WHERE COUNT (DISTINCT ventas.IDbodegas) = COUNT (bodegas.ID)

em regresa null

como seria la forma corecta de realizarla???
__________________
Siempre hay algo nuevo que aprender
  #4 (permalink)  
Antiguo 24/02/2005, 19:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
Proba ésto, no estoy seguro pero me parece que por ahí anda.
Es con subconsultas:

SELEC tiendas.id, tiendas.nombre
FROM tiendas
JOIN ventas ON tienda.id = ventas.idtienda
WHERE COUNT(ventas.idbodega) = SELECT COUNT(bodegas.id) FROM bodegas;
  #5 (permalink)  
Antiguo 24/02/2005, 20:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
Fijate que al principio me confundí y escribi masl SELECT

Sería así:


SELECT tiendas.id, tiendas.nombre
FROM tiendas
JOIN ventas ON tienda.id = ventas.idtienda
WHERE COUNT(ventas.idbodega) = SELECT COUNT(bodegas.id) FROM bodegas;

Y decime si funciono, que quiero saber.
  #6 (permalink)  
Antiguo 24/02/2005, 20:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
MMMMmmmm, para creo que me confundí, se casi seguro que si. Espera que piense...
  #7 (permalink)  
Antiguo 24/02/2005, 20:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
Mejor probá esto:

SELECT tiendas.id, tiendas.nombre, COUNT(*)
FROM tiendas
JOIN ventas ON tienda.id = ventas.idtienda
GROUP BY tiendas.id
HAVING COUNT(*) = SELECT COUNT(bodegas.id) FROM bodegas;

Y tambien decime si funcionó, que quiero saber. Aunque no es nada seguro, ya que no esta probado.
  #8 (permalink)  
Antiguo 24/02/2005, 20:16
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
Creo que si funciona, esta vez casi seguro..

Pero si no te funciona pone parentesis en la subconsulta, o sea:

SELECT tiendas.id, tiendas.nombre, COUNT(*)
FROM tiendas
JOIN ventas ON tienda.id = ventas.idtienda
GROUP BY tiendas.id
HAVING COUNT(*) = (SELECT COUNT(bodegas.id) FROM bodegas );


en COUNT(bodegas.id) tambien podrias poner COUNT(*) tal vez sea mejor.
  #9 (permalink)  
Antiguo 24/02/2005, 20:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 66
Antigüedad: 19 años, 9 meses
Puntos: 0
FINAL:

SELECT tiendas.id, tiendas.nombre, COUNT(*) AS "Cant bodegas a las que compraron"
FROM tiendas
JOIN ventas ON tienda.id = ventas.idtienda
GROUP BY tiendas.id
HAVING COUNT(*) = (SELECT COUNT(*) FROM bodegas );

Espero que te sirva y te repito que me digas si te funciono.
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:14.