PDA

Ver la Versión Completa : extraer solo 1 registro del detalle


oscarac
15-05-2019, 23:15:59
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


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

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
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

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

queria que salgo asi

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-window-functions/sql-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
No lo entiendo :confused:

si haces un query con un left join a estas tablas

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

el resultado seria
A - A1
A - A1
A - A1
B - NULL
C - C1
C - C1
C - C1
D - NULL



yo busco que salga asi

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

orodriguezca
16-05-2019, 19:05:22
Prueba de esta forma:


Select Codigo, descripcion, (Select count(*) from TblArticuloCfg B where A.Codigo = B.Codigo) as Contador
from tblArticulo A


Otra forma:


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




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