
06/09/2008, 20:44
|
| | Fecha de Ingreso: agosto-2008
Mensajes: 21
Antigüedad: 16 años, 7 meses Puntos: 0 | |
Como funcionan estos NOT EXISTS??? Artículos que se han vendido en todas las sucursales.
Solución: SELECT Nombre
FROM Articulos
WHERE NOT EXISTS( SELECT 1 FROM Sucursales
WHERE NOT EXISTS (SELECT 1
FROM Ventas
WHERE Sucursal=Sucursales.Id
AND Articulo=Articulos.Id))
ORDER BY 1; No entiendo como el mysql internamente me devuelve todos los articulos que se vendieron en todas las sucursales.
Lo que se trata de lograr podría expresarse así :
SELECCIONAR Nombre
DE Articulos
CUANDO PARA TODA Sucursal
EXISTE Venta de Articulo en Sucursal.
El problema es " CUANDO PARA TODA Sucursal..." que no tiene una traducción directa a MySQL, ni a ningún SQL que yo conozca. Pero esta expresión es equivalente a "NO EXISTE Sucursal TAL QUE NO...". Es decir, afirmar que algo se cumple para todas las Sucursales equivale a afirmar que no existe una región para la que no se cumpla. Resultaría :
SELECCIONAR Nombre
DE Articulos
CUANDO NO EXISTE Sucursal TAL QUE
NO EXISTE Venta de Articulo en Sucursal. |