Ayuda con Consulta A SQL

83 views
Skip to first unread message

Ricardo Soldini

unread,
Aug 30, 2023, 2:19:36 PM8/30/23
to Comunidad de Visual Foxpro en Español
Como están Estimados/Estimadas Colegas
Al intentar esta consulta en el MMS de sql me arroja 
Msg 116, Level 16, State 1, Line 16
Solo se puede especificar una expresión en la lista de selección cuando la subconsulta no se especifica con EXISTS
La consulta la estoy probando para despues pasarla por text endtext desde vfp (usando foxydb) 
El Objetivo es obtener los registros de la tabla Articulos que tengan registros 
en tabla Articulos_bodega y que previamente existan en la tabla mov_bod_det 
asociados a un registro especifico de mov_bod_enc (en este caso para probar se puso el id 16287 que existe)
La tabla Articulos tiene el campo Id_articulos y otros mas
la Tabla Articulos_bodega tiene el campo id_artculos_bodega, id_Articulos y otros mas
La Tabla Mov_bod_det tiene el campo id_mov_bod_det, Id_mov_bod_enc, id_articulos_bodega y otros mas
y el Mov_bod_enc tiene el campo id_mov_bod_enc y ottros mas
select id_articulos, descripcion from articulos
 where id_articulos  in (select mov_bod_enc.Id_Mov_Bod_enc
        , Mov_Bod_Det.Id_Mov_Bod_Det
        , Mov_Bod_Det.id_Articulo_bodega
                                , articulos_bodega.id_Articulos
, Articulos_Bodega.Id_Articulo_Bodega
from mov_bod_enc
inner join articulos_bodega  on articulos.id_articulos = Articulos_Bodega.id_Articulos
                        inner join mov_bod_det on Articulos_Bodega.Id_Articulo_Bodega = Mov_Bod_Det.id_Articulo_bodega
where mov_bod_enc.id_Mov_Bod_enc = 16287)

Agradecido de antemano por las sugerencias que puedan brindar

Victor Espina

unread,
Aug 30, 2023, 3:01:34 PM8/30/23
to Comunidad de Visual Foxpro en Español
El tema es que cuando tu usas el IN con una subconsulta, dicha subconsulta solo puede traer una columna (porque lo que quieres es verificar que un valor aparezca en una lista de valores).   En todo caso, lo que quieres se puede lograr mas facilmente:

SELECT DISTINCT a.id_articulos, a.descripcion
  FROM articulos a
 INNER JOIN articulos_bodega ab ON ab.id_Articulos = a.id_articulos
 INNER JOIN mov_bod_det mbd ON mbd.id_Articulo_bodega = ab.Id_Articulo_Bodega
 INNER JOIN mov_bod_enc mbe ON mbe.id_Mov_Bod_enc = 1628
7


Y te recomiendo fuertemente que aprendas a escribir tus queries de manera ordenada y usando alias.  Te ahorraras muchos dolores de cabeza.


Victor Espina

Victor Espina

unread,
Aug 30, 2023, 3:03:07 PM8/30/23
to Comunidad de Visual Foxpro en Español
A ese query que te pase le falta el enlace entre MOV_BOD_ENC y MOV_BOD_DET, que no estaba tampoco en tu query original.

Saludos

Victor Espina

Ricardo Soldini

unread,
Aug 30, 2023, 4:12:39 PM8/30/23
to Comunidad de Visual Foxpro en Español
Gracias Victor
Tenes Razon con lo del alias voy a hacerlo asi 

micky khan

unread,
Aug 30, 2023, 6:13:27 PM8/30/23
to publice...@googlegroups.com
SELECT DISTINCT a.id_articulos, a.descripcion
FROM articulos a
INNER JOIN articulos_bodega ab ON a.id_articulos = ab.id_Articulos
INNER JOIN mov_bod_det d ON ab.Id_Articulo_Bodega = d.id_Articulo_bodega
WHERE d.id_Mov_Bod_enc = 16287;

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/5e306cba-da41-4a55-b8b2-df5ab3f1fdc0n%40googlegroups.com.


--
  <_>
 (o o)
 (  °  )
<>-<>
Micky Khan
Reply all
Reply to author
Forward
0 new messages