Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   extraer solo 1 registro del detalle (https://www.clubdelphi.com/foros/showthread.php?t=93936)

oscarac 15-05-2019 23:15:59

extraer solo 1 registro del detalle
 
buenas tardes quiza el titulo no sea el mejor pero es lo que busco

todos hemos trabajado con Cabecera y detalle
si tengo un registro en la cabecera y le hago un join al detalle, el resultado seran tantos registros como tenga el detalle

estoy buscando la forma de "mostrar" solo 1 por detalle en caso exista el registro

la idea es buscar en otra tabla un codigo de articulo y que en caso existir me devuelva un true o false, o al menos el codigo del articulo buscado...

no se si logro hacerme entender

le estoy dando vueltas a como seria la consulta


Código SQL [-]
Select Codigo, descripcion 
from tblArticulo A
Left Join TblArticuloCfg B on A.Codigo = B.Codigo

quiza con subconsultas

oscarac 15-05-2019 23:30:52

se me ocurrio esto

Código SQL [-]
Select distinct Articulo into #arti from TblArticuloCfg where empresa ='005'

Select A.Codigo , A.descripcion, B.Articulo
from tblArticulo A
Left Join #arti B on A.Codigo = B.articulo 
where empresa = '005'

si alguien conoce otra forma, me ayuda?

Casimiro Notevi 16-05-2019 02:37:15

Depende del gestor de bases de datos que uses
Código SQL [-]
select first 1 from tbClientes where ...
select top 1 ...
select ... limit 1
etc.

oscarac 16-05-2019 04:13:40

si, eso lo sé
pero creo que no entendiste bien lo q queria hacer

Código:

Tabla 1                                        Tabla 2
A                                                  A1
B                                                  A1
C                                                  A1
D                                                  C1
                                                    C1
                                                    C1

queria que salgo asi
Cita:

A, A1
B, null
C, Cl1
D, Null

Casimiro Notevi 16-05-2019 08:09:54

No lo entiendo :confused:

mamcx 16-05-2019 14:29:38

Esto es una tarea para las funciones WINDOW:

https://mode.com/sql-tutorial/sql-window-functions/

en especial ROW_NUMBER

http://www.sqltutorial.org/sql-windo...ql-row_number/

Con eso, pones el # de fila en cada resultado de tabla2 y filtras el join WHERE row=1.

oscarac 16-05-2019 18:35:51

Cita:

Empezado por Casimiro Notevi (Mensaje 532042)
No lo entiendo :confused:

si haces un query con un left join a estas tablas
Cita:

Tabla 1 Tabla 2
A A1
B A1
C A1
D C1
C1
C1
el resultado seria
Cita:

A - A1
A - A1
A - A1
B - NULL
C - C1
C - C1
C - C1
D - NULL

yo busco que salga asi
Cita:

A, A1
B, null
C, Cl1
D, Null

orodriguezca 16-05-2019 19:05:22

Prueba de esta forma:

Código SQL [-]
Select Codigo, descripcion,  (Select count(*) from TblArticuloCfg B where  A.Codigo = B.Codigo) as Contador
from tblArticulo A

Otra forma:

Código SQL [-]
Select Codigo, descripcion , X.algun_campo
from tblArticulo A
cross Join ( select top 1 * from TblArticuloCfg B on A.Codigo = B.Codigo) X

oscarac 16-05-2019 19:13:25

si, esto tambien ayuda a mi proposito, gracias

aposi 16-05-2019 21:36:17

prueba el distinc


Código SQL [-]

select distinct A.Codigo , A.descripcion, B.Articulo 
from tblArticulo A 
Left Join #arti B on A.Codigo = B.articulo


La franja horaria es GMT +2. Ahora son las 06:18:10.

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