Como hacer el query

27/06/2006 - 18:43 por Imac_Man | Informe spam
saludos amigos,

mi caso es el que sigue, imaginemos tres tipicas tablas Clientes(
informacion de personas) , Facturas (Maestro) y MovimientosFacturas
(Detalle), los campos los dejo a su imaginacion, ahora mi pregunta es la
siguiente: ¿cual es la forma correcta de hacer un query cuando los campos que
necesito estan en las tres tablas?...la idea es que necesito hacer un
query eficiente super rapido y yo lo haria asi


select a.idfactura, b.FechaMovto, (select x.Nombre from clientes x where
x.idcliente = a.idcliente) from facturas a, MovimientosFacturas b
Where b.idfactura = a.idfactura

¿esta esto bien?.¿existe una forma mas eficiente?, ¿como haria si tengo
que filtrar por el nombre del cliente?¿Es mejor usar join?..


mil gracias de antemano

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/06/2006 - 19:11 | Informe spam
Imac_Man,

select
a.idfactura,
b.Nombre,
c.FechaMovto
from
dbo.factura as a
inner join
dbo.cliente
on a.idcliente = b.idcliente
inner join
dbo.movimiento as c
on a.idfactura = c.idfactura
where
b.nombre = ...


Compara los planes de ejecucion.


AMB

"Imac_Man" wrote:

saludos amigos,

mi caso es el que sigue, imaginemos tres tipicas tablas Clientes(
informacion de personas) , Facturas (Maestro) y MovimientosFacturas
(Detalle), los campos los dejo a su imaginacion, ahora mi pregunta es la
siguiente: ¿cual es la forma correcta de hacer un query cuando los campos que
necesito estan en las tres tablas?...la idea es que necesito hacer un
query eficiente super rapido y yo lo haria asi


select a.idfactura, b.FechaMovto, (select x.Nombre from clientes x where
x.idcliente = a.idcliente) from facturas a, MovimientosFacturas b
Where b.idfactura = a.idfactura

¿esta esto bien?.¿existe una forma mas eficiente?, ¿como haria si tengo
que filtrar por el nombre del cliente?¿Es mejor usar join?..


mil gracias de antemano


Respuesta Responder a este mensaje
#2 Imac_Man
28/06/2006 - 16:41 | Informe spam
el problema que veo es que la tabla de clientes podria no tener un registro
relacionado con la tabla de facturas, sucederia que apareceria solamente en
los casos en que exista una referencia.

"Alejandro Mesa" escribió:

Imac_Man,

select
a.idfactura,
b.Nombre,
c.FechaMovto
from
dbo.factura as a
inner join
dbo.cliente
on a.idcliente = b.idcliente
inner join
dbo.movimiento as c
on a.idfactura = c.idfactura
where
b.nombre = ...


Compara los planes de ejecucion.


AMB

"Imac_Man" wrote:

> saludos amigos,
>
> mi caso es el que sigue, imaginemos tres tipicas tablas Clientes(
> informacion de personas) , Facturas (Maestro) y MovimientosFacturas
> (Detalle), los campos los dejo a su imaginacion, ahora mi pregunta es la
> siguiente: ¿cual es la forma correcta de hacer un query cuando los campos que
> necesito estan en las tres tablas?...la idea es que necesito hacer un
> query eficiente super rapido y yo lo haria asi
>
>
> select a.idfactura, b.FechaMovto, (select x.Nombre from clientes x where
> x.idcliente = a.idcliente) from facturas a, MovimientosFacturas b
> Where b.idfactura = a.idfactura
>
> ¿esta esto bien?.¿existe una forma mas eficiente?, ¿como haria si tengo
> que filtrar por el nombre del cliente?¿Es mejor usar join?..
>
>
> mil gracias de antemano
>
>
Respuesta Responder a este mensaje
#3 Javier Loria
28/06/2006 - 19:41 | Informe spam
Hola ImacMan:
En ese caso puedes usar LEFT JOIN en lugar de INNER JOIN. El LEFT JOIN
incluirar todas las filas de las izquierda (Facturas) aun cuando no cumplan
la condicio de igualdad.
Saludos,

Javier Loria
Costa Rica
"Imac_Man" wrote in message
news:
el problema que veo es que la tabla de clientes podria no tener un
registro
relacionado con la tabla de facturas, sucederia que apareceria solamente
en
los casos en que exista una referencia.

"Alejandro Mesa" escribió:

Imac_Man,

select
a.idfactura,
b.Nombre,
c.FechaMovto
from
dbo.factura as a
inner join
dbo.cliente
on a.idcliente = b.idcliente
inner join
dbo.movimiento as c
on a.idfactura = c.idfactura
where
b.nombre = ...


Compara los planes de ejecucion.


AMB

"Imac_Man" wrote:

> saludos amigos,
>
> mi caso es el que sigue, imaginemos tres tipicas tablas Clientes(
> informacion de personas) , Facturas (Maestro) y MovimientosFacturas
> (Detalle), los campos los dejo a su imaginacion, ahora mi pregunta es
> la
> siguiente: ¿cual es la forma correcta de hacer un query cuando los
> campos que
> necesito estan en las tres tablas?...la idea es que necesito hacer
> un
> query eficiente super rapido y yo lo haria asi
>
>
> select a.idfactura, b.FechaMovto, (select x.Nombre from clientes x
> where
> x.idcliente = a.idcliente) from facturas a, MovimientosFacturas b
> Where b.idfactura = a.idfactura
>
> ¿esta esto bien?.¿existe una forma mas eficiente?, ¿como haria si
> tengo
> que filtrar por el nombre del cliente?¿Es mejor usar join?..
>
>
> mil gracias de antemano
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida