Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Join de 2 tablas y mostrar el primer resultado de la tabla 2 (https://www.clubdelphi.com/foros/showthread.php?t=57578)

santiaguinillo 20-06-2008 09:48:27

Join de 2 tablas y mostrar el primer resultado de la tabla 2
 
Hola,

es un poco complejo explicar la duda que tengo.

Quiero hacer una join de 2 tablas: TABLA_A y TABLA_B
Para un registro de TABLA_A puede relacionarse con varios de la TABLA_B de forma que quedaría un posible resultado:

REG1_TABLA_A - REG1_TABLA_B
REG1_TABLA_A - REG2_TABLA_B
REG1_TABLA_A - REG3_TABLA_B

REG2_TABLA_A - REG4_TABLA_B
REG2_TABLA_A - REG5_TABLA_B
REG2_TABLA_A - REG6_TABLA_B

REG3_TABLA_A - REG7_TABLA_B

Quisiera sacar la query para que me muestre sólo el primer resultado de la TABLA_B con la TABLA_A de forma que el resultado quede:

REG1_TABLA_A - REG1_TABLA_B
REG2_TABLA_A - REG4_TABLA_B
REG3_TABLA_A - REG7_TABLA_B

es decir que saque el max de la TABLA_B en cada grupo.

¿Qué he probado?
hacer un group by del ID de la TABLA_A
first
max

no sé que más probar.

Ivanzinho 20-06-2008 10:29:44

Podrías hacer lo siguiente :

Código SQL [-]
Select TA.Campo, max(TB.Campo)
from TablaA TA inner join TablaB TB
     on TA.idA = TB.idA
group by TA.Campo

Un saúdo.

santiaguinillo 20-06-2008 11:21:23

Hola Ivanzinho,

me ha ido bien esta query. Jo, lo sencilla que parece... eso demuestra que me falta nivel en SQL :(

Un saludo y gracias!!

santiaguinillo 01-07-2008 10:53:54

Duda para más campos
 
Hola Ivanzinho,

se me ha presentado otro problema:

si ahora quiero añadir TB.Campo2 en la select, por ejemplo:
Código SQL [-]
Select TA.Campo, max(TB.Campo),TB.Campo2
from TablaA TA inner join TablaB TB
     on TA.idA = TB.idA
group by TA.Campo,TB.Campo2

y Campo2 es diferente en todas las lineas, me vuelve a sacar todas los registros sin sacarme unicamente el max de TB.Campo. Por lo tanto, vuelve a sacarme:

REG1_TABLA_A - REG1_TABLA_B
REG1_TABLA_A - REG2_TABLA_B
REG1_TABLA_A - REG3_TABLA_B

¿Qué condición tengo que poner para que me coja sólo el primer max(TB.Campo) independientemente si TB.Campo2 es diferente en todas las lineas o no?

Cita:

Empezado por Ivanzinho (Mensaje 294788)
Podrías hacer lo siguiente :

Código SQL [-]Select TA.Campo, max(TB.Campo) from TablaA TA inner join TablaB TB on TA.idA = TB.idA group by TA.Campo


Un saúdo.



La franja horaria es GMT +2. Ahora son las 00:55:54.

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