Ayuda porfavor!!!

03/04/2007 - 06:58 por David Méndez | Informe spam
tengo las siguientes tablas:

CREATE TABLE VENTAS (
CLIREAL INT NOT NULL,
MATREAL CHAR(10) NOT NULL,
QTY SMALLINT NOT NULL DEFAULT 0,
AMOUNT DECIMAL(9,2) NOT NULL DEFAULT '0.00',
MES SMALLINT NOT NULL,
CLIENTE INT NOT NULL DEFAULT 0,
MATERIAL INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTCONV (
CODE INT PRIMARY KEY,
CONV INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTES (
CODE INT PRIMARY KEY,
NAME VARCHAR(40) NOT NULL,
VENDEDOR TINYINT NOT NULL DEFAULT 0,
USUARIO INT DEFAULT 0xFFFFFFFF
)

Necesito escoger los miembros que esten en estas 2 selecciones (NO la
UNION):

SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTES)
SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTCONV)

Basicamente necesito escoger las filas VENTAS.CLIREAL que NO se encuentran
en las filas CLIENTES.CODE y que simultaneamente no se encuentren en las
filas CLIENTCONV.CODE

Creo que debo usar la clave JOIN pero la verdad no la se usar.

Tambien tengo la idea de utilizar tablas temporales, con lo que podria hacer
1 filtro para generar una tabla y luego utilizar esta para hacer otro
filtro. Pero No se como hacerlo.

Muchas gracias.

David Méndez.

Preguntas similare

Leer las respuestas

#1 Maxi
03/04/2007 - 14:27 | Informe spam
Hola, te pído que antes de hacer estas pregunta leas en tus manuales por lo
menos lo basico, fijate como se hace un select con left join


"David Méndez" escribió en el mensaje de noticias
news:
tengo las siguientes tablas:

CREATE TABLE VENTAS (
CLIREAL INT NOT NULL,
MATREAL CHAR(10) NOT NULL,
QTY SMALLINT NOT NULL DEFAULT 0,
AMOUNT DECIMAL(9,2) NOT NULL DEFAULT '0.00',
MES SMALLINT NOT NULL,
CLIENTE INT NOT NULL DEFAULT 0,
MATERIAL INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTCONV (
CODE INT PRIMARY KEY,
CONV INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTES (
CODE INT PRIMARY KEY,
NAME VARCHAR(40) NOT NULL,
VENDEDOR TINYINT NOT NULL DEFAULT 0,
USUARIO INT DEFAULT 0xFFFFFFFF
)

Necesito escoger los miembros que esten en estas 2 selecciones (NO la
UNION):

SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTES)
SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTCONV)

Basicamente necesito escoger las filas VENTAS.CLIREAL que NO se encuentran
en las filas CLIENTES.CODE y que simultaneamente no se encuentren en las
filas CLIENTCONV.CODE

Creo que debo usar la clave JOIN pero la verdad no la se usar.

Tambien tengo la idea de utilizar tablas temporales, con lo que podria
hacer 1 filtro para generar una tabla y luego utilizar esta para hacer
otro filtro. Pero No se como hacerlo.

Muchas gracias.

David Méndez.

Respuesta Responder a este mensaje
#2 Javier Loria
03/04/2007 - 14:56 | Informe spam
Hola David:
Gracias por el DDL. Si entendi correctamente, puedes hacer.
=SELECT DISTINCT CLIREAL
FROM VENTAS
WHERE CLIREAL NOT IN (
SELECT CODE FROM CLIENTES
AND CLIREAL NOT IN (
SELECT CODE FROM CLIENTCONV
)
= Eventualmente la siguiente sintaxis puede ser más rapida:
=SELECT DISTINCT CLIREAL
FROM VENTAS
LEFT JOIN CLIENTES
ON VENTAS.CLIREAL=CLIENTES.CODE
LEFT JOIN CLIENTCONV
ON VENTAS.CLIREAL=CLIENTCONV.CODE
WHERE CLIENTES.CODE IS NULL
AND CLIENTCONV.CODE IS NULL
= Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"David Méndez" wrote in message
news:
tengo las siguientes tablas:

CREATE TABLE VENTAS (
CLIREAL INT NOT NULL,
MATREAL CHAR(10) NOT NULL,
QTY SMALLINT NOT NULL DEFAULT 0,
AMOUNT DECIMAL(9,2) NOT NULL DEFAULT '0.00',
MES SMALLINT NOT NULL,
CLIENTE INT NOT NULL DEFAULT 0,
MATERIAL INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTCONV (
CODE INT PRIMARY KEY,
CONV INT NOT NULL DEFAULT 0
)

CREATE TABLE CLIENTES (
CODE INT PRIMARY KEY,
NAME VARCHAR(40) NOT NULL,
VENDEDOR TINYINT NOT NULL DEFAULT 0,
USUARIO INT DEFAULT 0xFFFFFFFF
)

Necesito escoger los miembros que esten en estas 2 selecciones (NO la
UNION):

SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTES)
SELECT DISTINCT CLIREAL FROM VENTAS WHERE CLIREAL NOT IN (SELECT CODE FROM
CLIENTCONV)

Basicamente necesito escoger las filas VENTAS.CLIREAL que NO se encuentran
en las filas CLIENTES.CODE y que simultaneamente no se encuentren en las
filas CLIENTCONV.CODE

Creo que debo usar la clave JOIN pero la verdad no la se usar.

Tambien tengo la idea de utilizar tablas temporales, con lo que podria
hacer 1 filtro para generar una tabla y luego utilizar esta para hacer
otro filtro. Pero No se como hacerlo.

Muchas gracias.

David Méndez.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida