Spanish Ayuda con Sqlite

lumbanico

Member
Buenos días,

Estoy intentando montar una consulta a dos tablas de datos relacionadas. Una tiene los artículos y la otra tiene todos los lotes vinculados a cada uno de los artículos. Lo que quiero es que en una misma consulta me devuelva 2 lotes de todos los artículos, es decir:

Artículo - Lote
Artículo 1 - Lote A
Artículo 1 - Lote B
Artículo 2 - Lote C
Artículo 2 - Lote D
...

Lo he intentado con

B4X:
SELECT tblArticulos.ArtCI,  L.LotCI FROM tblArticulos INNER JOIN (SELECT TOP 2 LotCI, LotCIArticulo FROM tblLotes WHERE LotCIArticulo = tblArticulos.ArtCI )  AS L ON tblArticulos.ArtCI = L.LotCIArticulo ORDER BY  tblArticulos.ArtCI;

Pero no me funciona.

¿Alguna sugerencia? Gracias!
 

José J. Aguilar

Expert
Licensed User
Hola:

No soy muy bueno en SQL (tampoco) así que no me aclaro mucho. ¿Podrías poner la estructura de tus tablas y algunos datos de ejemplo?
Por eejmplo:
Tabla artículos:
id_articulo nombre_articulo
1 tomate
2 pera

Tabla Lotes:
id_lote id_articulo fecha_recepcion
A 1 2021-01-26
...
 

lumbanico

Member
Hola!

tblArticulos:
ArtCI - ArtDenominacion
1 - Tornillo
2 - Martillo
3 - Paleta

tblLotes;
LotCI - LotDenominacion - LotCIArticulo
1 - LOT2101 - 1
2 - LOT2102 - 2
3 - LOT2101 - 2
4 - LOT2103 - 1
5 - LOT2001 - 3
6 - LOT2002 - 3
7 - LOT2103 - 1

El resultado que quiero con la Consulta es el siguiente resultado, que daría dos lotes por artículo:

LotCI - LotDenominacion - LotCIArticulo - ArtDenominacion
1 - LOT2101 - 1 - Tornillo
4 - LOT2103 - 1 - Tornillo
2 - LOT2102 - 2 - Martillo
3 - LOT2101 - 2 - Martillo
5 - LOT2001 - 3 - Paleta
6 - LOT2002 - 3 - Paleta

Gracias!
 

IdasI4A

Active Member
Licensed User
Podría ser:
SQL:
SELECT L.LotCl,L.LotDenominacion,L.LotClArticulo,(SELECT A.ArtDenominacion FROM tblArticulos A WHERE A.ArtCl=L.LotClArticulo) as ArtDenominacion FROM tblLotes L

o bien

SQL:
SELECT L.LotCl,L.LotDenominacion,L.LotClArticulo, A.ArtDenominacion FROM tblLotes L INNER JOIN tblArticulos A ON L.LotClArticulo=A.ArtCl
 

lumbanico

Member
Podría ser:
SQL:
SELECT L.LotCl,L.LotDenominacion,L.LotClArticulo,(SELECT A.ArtDenominacion FROM tblArticulos A WHERE A.ArtCl=L.LotClArticulo) as ArtDenominacion FROM tblLotes L

o bien

SQL:
SELECT L.LotCl,L.LotDenominacion,L.LotClArticulo, A.ArtDenominacion FROM tblLotes L INNER JOIN tblArticulos A ON L.LotClArticulo=A.ArtCl

Las dos opciones funcionan correctamente, pero ¿cómo limito que el número máximo de lotes que muestre por cada artículo sea 5? He probado añadiendo LIMIT pero no me funciona.

Gracias!
 
Top