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

Ayuda!!!, Con sentencia SQL complicada

Estas en el tema de Ayuda!!!, Con sentencia SQL complicada en el foro de Bases de Datos General en Foros del Web. Me he atrancado con una sentencia SQL, bien se trata de los siguiente, resumiendo tendo dos tablas una con productos y otra con ofertas, en ...
  #1 (permalink)  
Antiguo 13/11/2003, 18:52
Avatar de CiberWeb  
Fecha de Ingreso: noviembre-2003
Ubicación: Talavera
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 6
Busqueda Ayuda!!!, Con sentencia SQL complicada

Me he atrancado con una sentencia SQL, bien se trata de los siguiente, resumiendo tendo dos tablas una con productos y otra con ofertas, en la tabla de oferta se van a ir almacenando las diferentes ofertas que e cada producto hagan varias tiendas asociadas ok???, de lo que se trata es de sacar aquellos productos que aún no han sido ofertados por una tienda en contreto.


PRODUCTO ............................ OFERTA
clave <---------------------------------> producto
producto............................... clave_oferta
..............................................tien da = 1

Me gustaría sacar aquellos PRODUCTO.producto que cuando OFERTA.tienda = 1 , aún no estén presentes en la tabla OFERTA

Señores me he atraccado y me estoy liando con esto, alguien me puede ayudar!!!

Saludos.
  #2 (permalink)  
Antiguo 14/11/2003, 03:48
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 8 meses
Puntos: 2
Bueno, hay dos formas de hacerlo según el tipo de gestor que uses.
1. Si usas un gestor que admite subselects, es decir, un gestor que no sea mysql:
Código:
select producto.clave
from producto 
where not exists (select * from oferta where clave=producto)
2. Si usas mysql, al no permitir las subselect, tienes que buscar otro artificio:
Código:
select producto.clave, count(oferta.producto) cuenta
from producto left join oferta on producto.clave=oferta.producto
group by 1
having oferta = 0
Si además quieres ver los productos que no están presentes en una tienda en concreto, pues tendrás que añadir la condición de la tienda en la subselect (en el caso 1) o en la where general (en el caso 2).

Un saludo

Última edición por Vice; 14/11/2003 a las 04:21
  #3 (permalink)  
Antiguo 14/11/2003, 05:43
Avatar de CiberWeb  
Fecha de Ingreso: noviembre-2003
Ubicación: Talavera
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 6
Gracias!!!

La madre que me pario, claro tío estoy usando MySQL y me acordaba del tema de las subselec, estaba haciendo un NOT IN y siempre me decía que revisara la versión etc etc, me estaba volviendo loco de verdad.

Gracias voy a probar
  #4 (permalink)  
Antiguo 18/11/2003, 17:22
Avatar de CiberWeb  
Fecha de Ingreso: noviembre-2003
Ubicación: Talavera
Mensajes: 50
Antigüedad: 20 años, 5 meses
Puntos: 6
RESULTADO FINAL

Al final salio esto despues de pensar en varias posibilidades...:

code:

SELECT modelos.MODELO,
modelos.CLAVE_MODELO,
count( ofertas.MODELO ) AS cuenta,
ofertas.TIENDA,
marca.MARCA
FROM marca
INNER JOIN modelos ON (marca.CLAVE_MARCA = modelos.MARCA)
LEFT OUTER JOIN ofertas ON (modelos.CLAVE_MODELO = ofertas.MODELO)
GROUP BY modelos.MODELO, modelos.CLAVE_MODELO, ofertas.TIENDA, marca.MARCA
HAVING
(
(ofertas.TIENDA <> 1)
or
(cuenta = 0)
)




donde "" ofertas.TIENDA <> 1 "" es para cuando la tienda es la 1 OK, de esta forma estraibo de la tabla modelos, aquellos modelos que no han sido ofertados por la tienda 1 y no están presentes en las ofertas. Si alguien lo puede mejorar lo agradecería....
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 10:05.