Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No sé si será eficiente o no .... pero esto parece que funciona :

Código SQL [-]
Select T1.CLAVE, T2.SUBCLAVE
from TABLA1 T1
left join (Select CLAVE, SUBCLAVE
           from TABLA2
             union
           Select CLAVE, 0 as SUBCLAVE
           from (Select CLAVE,
                 from TABLA2
                 group by CLAVE)) T2
on T1.CLAVE = T2.CLAVE

__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 07-10-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.559
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por gluglu Ver Mensaje
No sé si será eficiente o no .... pero esto parece que funciona :

Código SQL [-]
Select T1.CLAVE, T2.SUBCLAVE
from TABLA1 T1
left join (Select CLAVE, SUBCLAVE
           from TABLA2
             union
           Select CLAVE, 0 as SUBCLAVE
           from (Select CLAVE,
                 from TABLA2
                 group by CLAVE)) T2
on T1.CLAVE = T2.CLAVE

A menos que tengas más datos en las tablas el resultado es el que esperas.

saludos

Última edición por egostar fecha: 12-08-2013 a las 17:06:09.
Responder Con Cita
  #3  
Antiguo 08-10-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hola Egostar !

La imagen que adjuntas se refiere al resultado de un Join normal, y queda claro cual es el resultado.

Lo que necesito, es que en los registros con la clave B, me añada un registro B con una clave 0, que en tu ejemplo no se muestra.

La consulta y las tablas que he puesto aquí son muy simplificadas, a modo de ejemplo. Pero lo que trataba de explicar era que si existen registros en la Tabla2 con la Clave correspondiente, la consulta me devuelva en cada caso que exista esa clave en Tabla2, un registro adicional con SUBCLAVE = 0

Cita:
La consulta me devería devolver :
CLAVE, SUBCLAVE
A
B 0
B 1
B 2
B 3
C
Gracias por tus comentarios.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 08-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.066
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y esos números 'subclave' qué valores pueden tener?, lo digo porque si son valores fijos entonces puedes hacerlo con un store procedure y un bucle desde 0 hasta N-1 recorriendo la tabla 2.
Responder Con Cita
  #5  
Antiguo 08-10-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Hola Casimiro !

Los valores son valores que están en la Tabla2, según los haya creado el usuario, por lo tanto no son 'fijos'.

Sé que todo lo que pretendo lo puedo meter en un Stored Procedure (por cierto, no lo dije, utilizo Firebird 2.1), y ahí en el SP hago lo que quiero. Lo que pasa es que el asunto viene por otro lado ...

Tenía una consulta hecha en la cual posteriormente, recorriendo dicha consulta, tenía que buscar un valor nuevo dependiendo de los valores de la consulta inicial. He tenido que realizar algunos cambios en algunas tablas, añadiendo algunos campos más, y ahora se me plantea optimizar esa consulta, si fuera posible. Y quiero controlar si el tiempo es más eficiente teniendo una consulta inicial de aprox. 40 registros, y recorrer esa consulta de 40 registros para después realizar unas 180 consultas adicionales en un bucle, dependiendo del valor de esos 40 registros iniciales, o si es mejor en cuestiones de tiempo obtener inicialmente una consulta de unos 1200 registros, tratar esos 1200 registros y no tener que realizar consultas adicionales en un bucle de programa.

Es por ello que intentaba optimizar la consulta en sí misma, sin la necesidad de tener que crear un SP.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 08-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.066
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces según entiendo lo que quieres es que se añada, se cree, un registro en el resultado de la consulta, pero un registro que no existe.
Si lo he entendido bien, y puedo estar equivocado, por supuesto, pero dudo mucho que puedas hacer eso con un select. Vas a tener que hacer un SP.
Responder Con Cita
  #7  
Antiguo 08-10-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Exactamente es eso, lo que dices, que se 'añada' un nuevo registro en el propio Select. ... me has pillado la idea : Añadir un registro que no existe.

Precisamente eso es lo que conseguí con el Select que indiqué en el 2º Post de este hilo.
__________________
Piensa siempre en positivo !
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
I. Explorer 7 abre siempre una ventana adicional que da error y se situa al frente Wonni Windows 4 14-06-2007 00:27:37
usando LEFT JOIN o RIGHT JOIN alcides SQL 8 03-05-2007 17:35:46
left join e inner join duda Patricio SQL 0 26-04-2007 22:06:43
LEFT OUTER JOIN e INNER JOIN Juntos alcides SQL 3 08-07-2005 18:06:27
Adicional Registro simon Conexión con bases de datos 17 06-07-2004 17:58:04


La franja horaria es GMT +2. Ahora son las 07:29:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi