QUERY

11/02/2008 - 20:28 por Jaime | Informe spam
Tengo una tabla con varios datos, entre ellos, el numempresa, nombre,
direccion, cp
Tb tengo dos vistas (vista_Empresa1 y vista_Empresa2)con una query cada una
en las que existen una serie de numempresa

Necesito crear otra vista, que me saque todos los numempresa de la tabla1 xo
que no esten incluidos los numempresa de la vista_Empresa1 y los numempresa
de la vista_Empresa2
Como puedo hacer esto?

Gracias.

Preguntas similare

Leer las respuestas

#6 Jaime
12/02/2008 - 10:05 | Informe spam
estoy uniendo las vistas, pero luego me da error cuando hago el select.
Como deberia hacerlo?.
Gracias.

"Jaime" escribió en el mensaje
news:
podeis echarme una mano?, me estoy volviendo loco.

"Jaime" escribió en el mensaje
news:%
pero como hago para que la vista nueva tenga los numempresa que no esten
en esas vistas???

"Gux (MVP)" escribió en el mensaje
news:
Haga la UNION de las vistas:

SELECT numempresa FROM vista_empresa1
UNION
SELECT numempresa FROM vista_empresa2

y aplique luego el filtro que quiere.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Jaime" wrote:

Tabla:
Numempresa, Nombre,Direccion,CP,Producto

vista_Empresa1:
select Numempresa from Tabla1 where Producto IN(4,5,6) AND (Numempresa
NOT
IN
(select Numempresa from Tabla1 where (Producto IN (7,8)))

vista_Empresa2
select Numempresa from Tabla1 where Producto IN(7,8) AND (Numempresa
NOT IN
(select Numempresa from Tabla1 where (Producto IN (4,5,6)))

La vista que deseo seria los Numempresa que que no esten en la
vista_Empresa1 y vista_Empresa2 pero que tengan los
Productos(4,5,6,7,8)


"Gux (MVP)" escribió en el mensaje
news:
> Utilice el verbo [NOT ] EXISTS en la SELECT para detectar la
> presencia (o
> ausencia) de un dato en una tabla.
>
> Si usted mostrara la estructura de las tablas, algunos datos de
> ejemplo y
> lo
> que quiere obtener, posiblemente podriamos ayudarlo mejor.
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/profile/gux
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
>
>
> "Jaime" wrote:
>
>> Tengo una tabla con varios datos, entre ellos, el numempresa,
>> nombre,
>> direccion, cp
>> Tb tengo dos vistas (vista_Empresa1 y vista_Empresa2)con una query
>> cada
>> una
>> en las que existen una serie de numempresa
>>
>> Necesito crear otra vista, que me saque todos los numempresa de la
>> tabla1
>> xo
>> que no esten incluidos los numempresa de la vista_Empresa1 y los
>> numempresa
>> de la vista_Empresa2
>> Como puedo hacer esto?
>>
>> Gracias.
>>
>>
>>













Respuesta Responder a este mensaje
#7 Carlos M. Calvelo
12/02/2008 - 12:57 | Informe spam
Hola Jaime,

On 11 feb, 20:51, "Jaime" wrote:
Tabla:
Numempresa, Nombre,Direccion,CP,Producto

vista_Empresa1:
select Numempresa from Tabla1 where Producto IN(4,5,6) AND (Numempresa NOT
IN
(select Numempresa from Tabla1 where (Producto IN (7,8)))

vista_Empresa2
select Numempresa from Tabla1 where Producto IN(7,8) AND (Numempresa NOT IN
(select Numempresa from Tabla1 where (Producto IN (4,5,6)))

La vista que deseo seria los Numempresa que que no esten en la
vista_Empresa1 y vista_Empresa2 pero que tengan los Productos(4,5,6,7,8)




La empresa que tenga 'todos' los productos 4,5,6,7 y 8 nunca podrá
estar en vista_Empresa1 o vista_Empresa2. El problema se reduce
entonces a obtener todas aquellas empresas que tengan 'todos' los
productos 4,5,6,7 y 8.

Que viene a ser algo como:
'Dame las empresas e que tienen todos los productos p del conjunto
{4,5,6,7,8}'

Eso de 'todos los productos p...' no se puede expresar en SQL. Pero
lo siguiente es equivalente:

'Dame las empresas e para las que no existe un producto p
del conjunto {4,5,6,7,8} de tal manera que no existe
la combinación (e,p).'

select distinct t1.numempresa
from tabla1 as t1
where not exists
(select p1.*
from (select 4 as producto
union select 5
union select 6
union select 7
union select 8) as p1
where not exists
(select distinct *
from tabla1
where numempresa=t1.numempresa
and producto=p1.producto))

Saludos,
Carlos
Respuesta Responder a este mensaje
#8 Carlos M. Calvelo
12/02/2008 - 13:04 | Informe spam
Hola Jaime,

On 11 feb, 22:33, "Jaime" wrote:
pero como hago para que la vista nueva tenga los numempresa que no esten en
esas vistas???




Pues asi:

select distinct numempresa from tabla1
where numempresa not in
(
select numempresa from vista_Empresa1
union
select numempresa from vista_empresa2
)

Pero como he comentado en mi otro post
esto no es necesario porque ahora aun tienes
el problema de seleccionar las empresas que
tienen todos los productos 4,5,6,7 y 8.

Saludos,
Carlos
Respuesta Responder a este mensaje
#9 Carlos M. Calvelo
12/02/2008 - 14:20 | Informe spam
On 12 feb, 12:57, "Carlos M. Calvelo" wrote:
Hola Jaime,

On 11 feb, 20:51, "Jaime" wrote:

> Tabla:
> Numempresa, Nombre,Direccion,CP,Producto

> vista_Empresa1:
> select Numempresa from Tabla1 where Producto IN(4,5,6) AND (Numempresa NOT
> IN
> (select Numempresa  from Tabla1 where (Producto IN (7,8)))

> vista_Empresa2
> select Numempresa from Tabla1 where Producto IN(7,8) AND (Numempresa NOT IN
> (select Numempresa  from Tabla1 where (Producto IN (4,5,6)))

> La vista que deseo seria los Numempresa que que no esten en la
> vista_Empresa1 y vista_Empresa2 pero que tengan los Productos(4,5,6,7,8)

La empresa que tenga 'todos' los productos 4,5,6,7 y 8 nunca podrá
estar en vista_Empresa1 o vista_Empresa2.



Por si he interpretado mal y lo que realmente quieres
son la empresas que tengan *al menos uno* de los
productos {4,5,6,7,8} (en vez de *todos*), entonces
seguro que lo que buscas es esto:

select distinct numempresa from tabla1
where numempresa not in
(
select numempresa from vista_Empresa1
union
select numempresa from vista_empresa2
)
and producto in (4,5,6,7,8)

Saludos,
Carlos
Respuesta Responder a este mensaje
#10 Juan Armani
12/02/2008 - 14:44 | Informe spam
Hola Jaime,
sera algo como esto lo que quieres hacer?

Select Numempresa From Tabla1 where Numempresa not in (Select numempresa
From Vista1 )
and Producto in (4,5,6,7,8)
union
Select Numempresa From Tabla1 where Numempresa not in (Select numempresa
From Vista2 )
and Producto in (4,5,6,7,8)

lo puedes hacer con union o agregando el filtor de la Vista2 en el primer
select..
Saludos.

Juan Armani

"Jaime" escribió en el mensaje
news:OERa%
estoy uniendo las vistas, pero luego me da error cuando hago el select.
Como deberia hacerlo?.
Gracias.

"Jaime" escribió en el mensaje
news:
podeis echarme una mano?, me estoy volviendo loco.

"Jaime" escribió en el mensaje
news:%
pero como hago para que la vista nueva tenga los numempresa que no esten
en esas vistas???

"Gux (MVP)" escribió en el mensaje
news:
Haga la UNION de las vistas:

SELECT numempresa FROM vista_empresa1
UNION
SELECT numempresa FROM vista_empresa2

y aplique luego el filtro que quiere.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/profile/gux
Este mensaje se proporciona tal como es, sin garantías de ninguna
clase.



"Jaime" wrote:

Tabla:
Numempresa, Nombre,Direccion,CP,Producto

vista_Empresa1:
select Numempresa from Tabla1 where Producto IN(4,5,6) AND (Numempresa
NOT
IN
(select Numempresa from Tabla1 where (Producto IN (7,8)))

vista_Empresa2
select Numempresa from Tabla1 where Producto IN(7,8) AND (Numempresa
NOT IN
(select Numempresa from Tabla1 where (Producto IN (4,5,6)))

La vista que deseo seria los Numempresa que que no esten en la
vista_Empresa1 y vista_Empresa2 pero que tengan los
Productos(4,5,6,7,8)


"Gux (MVP)" escribió en el mensaje
news:
> Utilice el verbo [NOT ] EXISTS en la SELECT para detectar la
> presencia (o
> ausencia) de un dato en una tabla.
>
> Si usted mostrara la estructura de las tablas, algunos datos de
> ejemplo y
> lo
> que quiere obtener, posiblemente podriamos ayudarlo mejor.
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/profile/gux
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
>
>
> "Jaime" wrote:
>
>> Tengo una tabla con varios datos, entre ellos, el numempresa,
>> nombre,
>> direccion, cp
>> Tb tengo dos vistas (vista_Empresa1 y vista_Empresa2)con una query
>> cada
>> una
>> en las que existen una serie de numempresa
>>
>> Necesito crear otra vista, que me saque todos los numempresa de la
>> tabla1
>> xo
>> que no esten incluidos los numempresa de la vista_Empresa1 y los
>> numempresa
>> de la vista_Empresa2
>> Como puedo hacer esto?
>>
>> Gracias.
>>
>>
>>

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida