Unión de tablas

10/11/2003 - 17:34 por Pablo | Informe spam
Me gustaría saber cuál es el sistema más efectivo de
hacer una unión entre dos tablas: ¿especificando la
condición de unión en el where o con un inner join?

Lo más curioso es que probé a consultar el plan de
ejecución de la misma consulta en dos ordenadores
distintos y sólo en uno de ellos se resuelven exactamente
igual.

Preguntas similare

Leer las respuestas

#1 Accotto Maximiliano D.
10/11/2003 - 18:23 | Informe spam
mira hay una diferencia:

Por excelencia para mi el Join es muy superior al Where pero el join no es
de todos los motores de BDD.
Si piensas en hacer una aplicacion q siempre correra en SQL (usa join sin
dudas) ahora si este no es el caso ten mucho cuidado porque hay motores
donde el join no es valido y hay q recurrir al SQL ansi (o sea con Wheres )

pd: si me dices q uniones querias hacer y como las escribiste (pasa el sql)
te puedo llegar a decir porque no dan iguales.



Un abrazo

Accotto Maximiliano Damian
"Pablo" escribió en el mensaje
news:09fc01c3a7a8$75d9faf0$
Me gustaría saber cuál es el sistema más efectivo de
hacer una unión entre dos tablas: ¿especificando la
condición de unión en el where o con un inner join?

Lo más curioso es que probé a consultar el plan de
ejecución de la misma consulta en dos ordenadores
distintos y sólo en uno de ellos se resuelven exactamente
igual.
Respuesta Responder a este mensaje
#2 Javier Loria
10/11/2003 - 23:02 | Informe spam
Hola Accotto:
Dices: hay q recurrir al SQL ansi (o sea con Wheres ) ??????
Los JOIN SON ANSI!!!!!
=SET FIPS_FLAGGER 'FULL'
SELECT *
FROM Employee JOIN JOBS
ON Employee.job_id=Jobs.job_id
== Saludos,


Javier Loria
Costa Rica
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.

Accotto Maximiliano D. escribio:
mira hay una diferencia:

Por excelencia para mi el Join es muy superior al Where pero el join
no es de todos los motores de BDD.
Si piensas en hacer una aplicacion q siempre correra en SQL (usa join
sin dudas) ahora si este no es el caso ten mucho cuidado porque hay
motores donde el join no es valido y hay q recurrir al SQL ansi (o
sea con Wheres )

pd: si me dices q uniones querias hacer y como las escribiste (pasa
el sql) te puedo llegar a decir porque no dan iguales.



Un abrazo
Respuesta Responder a este mensaje
#3 Accotto Maximiliano Damian
10/11/2003 - 23:44 | Informe spam
Estimado!! hay motores como por ej Centura q no soportan Join y hay q
recurrir a SQL ansi para ello
Sabes q es SQL Ansi?

ACCOTTO MAXIMILIANO DAMIAN
GERENTE DE SISTEMAS
UN SALUDO MUY CORDIAL
"Javier Loria" escribió en el mensaje
news:
Hola Accotto:
Dices: hay q recurrir al SQL ansi (o sea con Wheres ) ??????
Los JOIN SON ANSI!!!!!
=> SET FIPS_FLAGGER 'FULL'
SELECT *
FROM Employee JOIN JOBS
ON Employee.job_id=Jobs.job_id
==> Saludos,


Javier Loria
Costa Rica
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.

Accotto Maximiliano D. escribio:
> mira hay una diferencia:
>
> Por excelencia para mi el Join es muy superior al Where pero el join
> no es de todos los motores de BDD.
> Si piensas en hacer una aplicacion q siempre correra en SQL (usa join
> sin dudas) ahora si este no es el caso ten mucho cuidado porque hay
> motores donde el join no es valido y hay q recurrir al SQL ansi (o
> sea con Wheres )
>
> pd: si me dices q uniones querias hacer y como las escribiste (pasa
> el sql) te puedo llegar a decir porque no dan iguales.
>
>
>
> Un abrazo


Respuesta Responder a este mensaje
#4 Javier Loria
11/11/2003 - 04:14 | Informe spam
HoLa Accotto:
Muchas gracias por preguntar que es ANSI SQL.
De hecho el comando que te envie, SET FIPS_FLAGGER 'FULL'? es parte de
los requerimientos de la "Federal Information Proccesing Standards
Publication" que se exige a los fabricantes para que los usuarios podamos
distinguir entre el SQL estandard y las extensiones del fabricante.
Cuando escribes SET FIPS_FLAGGER 'FULL', le indicas al servidor que te
prevenga de comandos que NO cumplen el standard. Se puede encontrar mas
informacion en: http://www.itl.nist.gov/fipspubs/fip127-2.htm
Lo imporante aqui es que LA SENTENCIA JOIN ES ANSI. Si no le crees al
FIPS_FLAGGER revisa el sitio de Oracle
http://otn.oracle.com/oramag/oracle...1sql.html. Pero por supuesto
que esto lo sabias, y probablemente fue un mal entendido.

Saludos,


Javier Loria
Costa Rica
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.

Accotto Maximiliano Damian escribio:
Estimado!! hay motores como por ej Centura q no soportan Join y hay q
recurrir a SQL ansi para ello
Sabes q es SQL Ansi?

Hola Accotto:
Dices: hay q recurrir al SQL ansi (o sea con Wheres ) ??????
Los JOIN SON ANSI!!!!!
=>> SET FIPS_FLAGGER 'FULL'
SELECT *
FROM Employee JOIN JOBS
ON Employee.job_id=Jobs.job_id
==>> Saludos,


Javier Loria
Costa Rica
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.

Accotto Maximiliano D. escribio:
mira hay una diferencia:

Por excelencia para mi el Join es muy superior al Where pero el join
no es de todos los motores de BDD.
Si piensas en hacer una aplicacion q siempre correra en SQL (usa
join sin dudas) ahora si este no es el caso ten mucho cuidado
porque hay motores donde el join no es valido y hay q recurrir al
SQL ansi (o sea con Wheres )

pd: si me dices q uniones querias hacer y como las escribiste (pasa
el sql) te puedo llegar a decir porque no dan iguales.



Un abrazo
Respuesta Responder a este mensaje
#5 Accotto Maximiliano D.
11/11/2003 - 13:13 | Informe spam
Hola gracias por la data!! eso q vos me indicas no lo vi funcionar en otros
motores.
Te comento:

SQL-BAse (un motor de centura) no usa joins utiliza el viejo sistema del *=*
(lo usaste alguna vez?)
y la instruccion q vos decis no funciona en este motor.

Lo unico q yo queria apuntar q el metodo join es barbaro pero hay q saber lo
otro tambien.

Me paso de tener el SOft en Centura y pasarlo a SQL y tuve esos problemas
(el SQLBASE no admite Joins de ninguna forma)

Muchas gracias igual por el dato y tu participacion en el foro.
Accotto Maximiliano Damian
"Javier Loria" escribió en el mensaje
news:eUQ%
HoLa Accotto:
Muchas gracias por preguntar que es ANSI SQL.
De hecho el comando que te envie, SET FIPS_FLAGGER 'FULL'? es parte


de
los requerimientos de la "Federal Information Proccesing Standards
Publication" que se exige a los fabricantes para que los usuarios podamos
distinguir entre el SQL estandard y las extensiones del fabricante.
Cuando escribes SET FIPS_FLAGGER 'FULL', le indicas al servidor que


te
prevenga de comandos que NO cumplen el standard. Se puede encontrar mas
informacion en: http://www.itl.nist.gov/fipspubs/fip127-2.htm
Lo imporante aqui es que LA SENTENCIA JOIN ES ANSI. Si no le crees al
FIPS_FLAGGER revisa el sitio de Oracle
http://otn.oracle.com/oramag/oracle...1sql.html. Pero por supuesto
que esto lo sabias, y probablemente fue un mal entendido.

Saludos,


Javier Loria
Costa Rica
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.

Accotto Maximiliano Damian escribio:
> Estimado!! hay motores como por ej Centura q no soportan Join y hay q
> recurrir a SQL ansi para ello
> Sabes q es SQL Ansi?
>
>> Hola Accotto:
>> Dices: hay q recurrir al SQL ansi (o sea con Wheres ) ??????
>> Los JOIN SON ANSI!!!!!
>> => >> SET FIPS_FLAGGER 'FULL'
>> SELECT *
>> FROM Employee JOIN JOBS
>> ON Employee.job_id=Jobs.job_id
>> ==> >> Saludos,
>>
>>
>> Javier Loria
>> Costa Rica
>> 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.
>>
>> Accotto Maximiliano D. escribio:
>>> mira hay una diferencia:
>>>
>>> Por excelencia para mi el Join es muy superior al Where pero el join
>>> no es de todos los motores de BDD.
>>> Si piensas en hacer una aplicacion q siempre correra en SQL (usa
>>> join sin dudas) ahora si este no es el caso ten mucho cuidado
>>> porque hay motores donde el join no es valido y hay q recurrir al
>>> SQL ansi (o sea con Wheres )
>>>
>>> pd: si me dices q uniones querias hacer y como las escribiste (pasa
>>> el sql) te puedo llegar a decir porque no dan iguales.
>>>
>>>
>>>
>>> Un abrazo


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