FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Inner Join del SQL Server
Hola, estoy trabajando en mi empresa con Delphi 6, y estoy usando el motor de base de datos Sybase y estoy empezando a migrar a SQL Server 2000.
En Sybase se puede usar INNER JOIN sin agregarle [ON <condiciones>] y todas las consultas las tengo sin ese ON. En SQL Server veo que debe especificarse dichas condiciones, lo cual me llevaria mucho tiempo la migracion. Quiero saber si hay forma de hacer las consultas sin el ON en SQL Server, o algo para simplificar un poco la cosa... Gracias!! |
#2
|
||||
|
||||
No se si sql server soporte la sintaxis sugerida en el estándar SQL-99 (si no mal recuerdo) para estos casos, que es cross join.
Si lo analizas, verás que el problema está originalmente en Sybase... que no tiene sentido hacer un inner join sin clausula on. Igual, para efectos de "agilizar" la migración, podes añadirle a todas las consultas una clausula on que siempre devuelva True. Por ejemplo:
Es una sentencia válida para el estándar, y estoy seguro que también para sqlserver. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Como hacer "INNER JOIN" sin incluir "ON"
Estor tratando de migrar una base de datos muy grande en Sybase hacia SQL Server 2000, y el motor del sybase me permite hacer un "INNER JOIN" sin incluir "ON" (este es opcional)
Por ejemplo: En Sybase puedo hacer (y deseo seguir haciendo) SELECT * FROM Paises INNER JOIN Provincias INNER JOIN Ciudades En SQL Server SELECT * FROM Paises P INNER JOIN Estados E ON P.CodPais=E.CodPais INNER JOIN Ciudades C ON E.CodEstado=C.CodEstado me resulta muy poco amigable a la hora de migrar. Alguien sabe como safar de este problema? |
#4
|
||||
|
||||
No creo que puedas (estoy casi seguro) hacer los JOIN's en SQL sin colocar el ON. Creo que loo vas a tener que hacer "a mano"; En todo caso te podrias hacer un programita al que le pasaras una sentencia SQL y te los añadiera, pero no veo mucho más...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
||||
|
||||
Me causa curiosidad saber como Sybase asume automaticamente cuales campos utilizara en los JOIN
Supongo que es para un caso muy particular, determinando los primary keys y foreign keys, pero eso no forma parte de los estandares SQL/92 y SQL/99
__________________
Héctor Geraldino Software Engineer |
#6
|
||||
|
||||
Yo he supuesto que era por los nombres de campo, pero tb tengo curiosidad.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#7
|
||||
|
||||
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
||||
|
||||
Cita:
Los he "juntado" y movido al foro de SQL Server que parece que es donde deben estar.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#9
|
|||
|
|||
eso
Disculpen que me demoré en responder. Afirmo al 100% que en Sybase SQL Anywhere 5.0 se puede hacer INNER JOIN sin agregar "ON". Y no es para ninguna consulta particular, ya que para Sybase te devuelve los mismos registros si le pones el "ON" o no. Tambien la misma regla es para LEFT ó RIGHT OUTER JOIN. Es obvio que tenes que definir previamentelas relaciones entre las tablas. Tengo stored procedures con mas de 100 lineas de codigo SQL y de esta manera es mucho mas legible el codigo (gran ventaja) y en SQL Server no veo forma de hacer esto asi. tendre que hacer un programita que me agregue ese "ON" al codigo. Yo probe el CROSS JOIN del SQL Server y te devuelve (por ejemplo) que todos los empleados trabajan en todos los departamentos.
Saludos. |
#10
|
||||
|
||||
Cita:
* Puerto_origen, puerto_destino (relaciones entre viaje-Puerto) * Población_Residencia, población_nacimiento... * Empresa, empresa_facturacion * ... En estos casos el sistema es incapaz de resolver esa JOIN.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
||||
|
||||
Cita:
Si planeas soportar mas motores en el futuro, es buena idea que diseñes sentencias tan apegadas al estándar como sea posible. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|