buenas tardes,
cual seria la estructura de una consulta para extraer todos los registros de una tabla cuyo campo clave no está en otra tabla?
un saludo,
josé carlos.
| |||
select elementos de una tabla que no estan en otra buenas tardes, cual seria la estructura de una consulta para extraer todos los registros de una tabla cuyo campo clave no está en otra tabla? un saludo, josé carlos. |
| ||||
Respuesta: select elementos de una tabla que no estan en otra Una alternativa mas...(te encontraras esta pregunta en entrevistas de SQL ya que es un problema muy comun).
Código:
Saludos! Select T1.* From Tabla1 T1 Left Outer Join Tabla2 T2 ON T1.Codigo = T2.Codigo where T2.Codigo is null
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| |||
Respuesta: select elementos de una tabla que no estan en otra esta creo que sería otra: select tabla1.* from tabla1,tabla2 where NOT tabla1.codigo = tabla2.codigo pero cual sería la mas eficiente? un saludo, josé carlos. |
| ||||
Respuesta: select elementos de una tabla que no estan en otra tu opcion genera un cross join entre las dos tablas, lo que significa que primero hace un producto cartesiano y luego en el where descarta todas las combinaciones que no coinciden con tus filtros. Las subconsultas yo prefiero evitarlas o restringirlas para cuando se que retornara una cantidad pequena de registros. La mejor opcion para mi (me ha dado mejores resultados), cuando son muchos registros es utilizar joins explicitos.. Saludos!
__________________ La sencillez y naturalidad son el supremo y último fin de la cultura... -- MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications. |
| ||||
Respuesta: select elementos de una tabla que no estan en otra Ademas, como un simple complemento, esto: select tabla1.* from tabla1,tabla2 where NOT tabla1.codigo = tabla2.codigo Es codificacion antigua, es recomendable el uso de JOIN |
| |||
Respuesta: select elementos de una tabla que no estan en otra Hola. He tocado poco Oracle, pero en éste, se haría como indica evoarte y creo que lo de los cross join, left, etc... no existen. Me gustaría ver una comparación exacta de rendimiento, si sabeis de alguna. Gracias y saludos |