Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SELECTSQL
ForoComunidadVFP Acercade..
9dediciembrede2004 BuscarenelBlog
Cmoycundousar BuscarenesteBlog
Buscar
subconsultas...?SELECTSQL
Arculos
Algunavezsehapreguntadocomosacaresa
consultaSQLquelehanpedido?,intentas 2017(5)
proyectartablasconFULLJOIN,INNERJOIN,LEFT
2016(68)
JOINytodavianoseobenenlosresultados
deseados... 2015(80)
2014(20)
Aveceshayquerecurriralassubconsultaspara 2013(21)
llegaranuestroobjevo...Quizsespicoelestar
2012(28)
buscandolasformasdeejecutarconsultasSELECT
SQLparaobtenerunconjuntodedatosespecco, 2011(24)
estoporqueyaestscansadodecrearcursores 2010(11)
hechosconCREATECURSORyrellenadosmediante
2009(17)
uncicloSCAN...ENDSCAN(ok,podrashacerlocon
DOWHILENOTEOF(),peroesoyaestpasadode 2008(37)
moda,ademsdequeresultaserpocoeciente 2007(50)
debidoaquenoulizarsasumximola
2006(96)
opmizacinRushMore,unadelasventajasdel
2005(52)
usodeVisualFoxPro).Hazconsultadoconalgunos
detuscolegasyterespondenqueefecvamente, 2004(53)
debehaberalgunamaneradehacerlopormedio diciembre(4)
desentenciasSQL.Ytusextosendocasitelo Obtenerlaversioncon
puedegritar!! quefuecompiladoun
EXEde...
Aconnuacinexpondremosuncasopicoenlos Comosemueveelratn
cualessernecesariohacerunoscuantos"trucos"
Cmoycundousar
paraobtenereltanansiadocursorquenonosdeja subconsultas...?
enpaz: SELECTSQL
Reduciendoelempo
Lagerenciatepidequeexpongasenunreporteun dedesarrollo
resumendelascomprasyventasdelosarculos
enellmomes,dondecomparesladoalado, noviembre(3)
cuantossevendieron,cuantossecompraronpor octubre(3)
arculo,quedandoquizasalgoporeleslo: sepembre(3)
agosto(7)
IDArculo Descripcion Compras Ventas
julio(6)
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 1/7
11/2/2017 ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
Entradadestacada
Documentacinde
FoxBarcode
Lomasvistoestasemana
Loprimeroquesenospodraocurriresuna
consultadondeproyectaramos"todos"vs"todos"
Trabajarconfechasyhoras
paraobtenerconjuntodedatosdeseados: enVisualFoxPro
FuncionaVisualFoxPro9
SELECT Ventas.IDArticulo, SUM(compras.Cantidad) as enWindows10?
SumaCompras,;
SUM(ventas.cantidad) AS SumaVentas ;
FROM Compras ; Massobreelenviode
FULL JOIN Ventas ON Ventas.IdArticulo = Compras.IdArticulo ;
mensajesdecorreo
GROUP BY Ventas.idarticulo ; electrnicodesdeVisual
INTO CURSOR cResumen FoxPro
Envodecorreoelectrnico
porelservidorSMTPde
Aprimeravistaparecebuenalaidea,sumamos Gmail
todaslascandadesdecompras,todaslas
candadesdeventasdeunamezcladetodoslos Agregarcolumnasen
sentenciasSELECTSQL
registros,no?Perosabrasquepasa?:Nofunciona,
yaqueobtendremosdatosquenadaenenque VFPymySQL
ver,primeramenteporqueseestancualicandolas
tuplasdelatablaventascontralastuplasdela SQLSelectenVFPyTSQL
tablacompras,perontesequehayalgunosIDs
queestnenuna,peroquenoestnenlaotra, Formulariotransparente
masnoloscontroles
dandonoselsiguienteresultado: contenidos
ConsumiendoServicios
WebconMicrosoVisual
FoxPro
CrearPDFconVisual
FoxPro
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 2/7
11/2/2017
ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
Visitas
Podrascomentar,"Yacasi",solomefaltelcodigo
002queesdelatablacomprasquenoestabaenla 9 0 9 6 7 2
tablaventas,hmmmsi,enefectoesasi,puedes
seguirintentandocambiarlasclausulasporLEFT Traductor
JOIN,RIGTHJOIN,cambiarVentas.Arculo= Seleccionaridioma
Compras.IdArculoporCompras.IdArculo=
Ventas.Arculoenlocorrespondientealaclusula
ON(delosoperadoresdeproyeccion),pero
obtendrsdiferentesresultadosqueseguirnsin
serlosqueesperabas.
Inclusive,puedesllegarapensarquetalvezel
operadordeigualdadsalesobrando,eintentasuna
msparaversifunciona:
SELECT ventas.idArticulo,;
SUM(ventas.cantidad) AS TotalVentas,;
SUM(compras.cantidad) AS TotalCompras ;
FROM ventas,compras ;
GROUP BY ventas.idArticulo ;
INTO CURSOR cReporte
Ytenemoselsiguienteresultado:
Quesucedi?,lamentablementealhacerlodeesta
formaseestulizandoimplicitamenteun
operadordeigualdadentrelasendades(INNER
JOIN),yesosintomarencuentaquelasumano
sonloquedeberiatener,porloquetampoco
obtenemosloquequeremos.
Entonces?Quesloquedebemoshacer?,la
solucinessencilla,elusodesubconsultas.Resulta
serqueelalgebradeconjunto(queeslateoraque
sustentaalaprccadeellenguajeSQL)eneun
pequeo"truco"paranormalizarestepequeo
desperfectoenloqueparecenotenersolucin.
Estoselellamansubconsultas(masadelante
veremosqueotrosnombresselesconoce).
Enelparrafoanteriorhicemencinauntemaque
esbasedeesto,lanormalizacin,envezde
intentarproyectarlascolumnasquesern
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 3/7
11/2/2017 ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
calculadas(ennuestroejemplosesumaron,pero
bienpudieronhabersidocontadas)parallegaral
resultadoinmediato,debemoscrearunconjunto
dedatosintermedio,elcual,nosservirparaahora
siproyectarlocorrectamente:
Conelqueryanteriorobtendremosunconjuntode
datosnormalizadoscomoelquesigue:
Yasevaviendomejor?,claro!,ahoraaste
conjuntodedatosslolefaltarahaceruna
agrupacinysuma,paraquequedecomolo
deseamos:
Quedandocomosigue:
Ahorasi,llegamosalosresultadosdeseados
(puedeshacerlasumamanual,nomehe
equivocado:),comocomentabaeneliniciodel
arculoaveceses*NECESARIO*.Cabedestacar
queenlasconsultasheobviadolasclsulas
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 4/7
11/2/2017 ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
WHERE,yaqueesdemasiadoobvioquesiempre
debernincluirseencadaunadelaconsultasque
hemosunido(conlaclasulaUNION).
Aprovechoestemomentodetuatencinpara
demostrarlamaneraenquetambinpodrser
realizadoconlaVFP9(laprximaversindel
producto),enlaquesepuedesimplicaranms
estasentenciaSQL:
SELECT codigo,;
SUM(cResumen.nCompras) AS TotalCompras ,;
SUM(cResumen.nVentas ) AS TotalVentas ;
FROM (SELECT codigo, ;
CAST(0 as Int) AS nCompras, Cantidas as nVentas ;
FROM Ventas ;
UNION ;
SELECT Codigo,;
Cantidad as nCompras, CAST(0 as Int) AS nVentas ;
FROM Compras ) cResumen ;
GROUP BY cResumen.Codigo ;
INTO CURSOR cReporte
Aquseharusodeloqueseledenomina
sentenciasanidadas,endondetenemosvarias
partesclave.
Enprimerlugarsepuedeapreciarqueseest
realizandounasentenciaanidadenalulizarcomo
cursordeprocedencia...otraconsulta!!FROM(
SELECT...),estonosdlaventajadepoderanidar
tantasconsultasseannecesarias.
Comosegundopuntoafavorestamosulizando
unadelasnuevasfunciones:CAST(),conella
prescindiremosdelostrucosquehemosestado
usandopara"forzar"quelascolumnascalculadas
deVFPtenganunpodedatos,anchooprecisin
queserequiera,envezdetenerqueulizarpor
ejemplo000000paraforzarquefueraunenterode
ancho6,ousar$0paraqueseadepoMoneda,y
unsinndeetceteras.
Conlacombinacindeambas,obtenemosuna
consultamascompacta,tepodrnpreguntarEn
qunosbeneciaeso?,enquedichaconsulta,si
endadomomentodeseapasarseaunservidorde
basededatos(porejemploMSSQLServer),la
transicinseamsligera,yaquedesdehace
muchoempoestosmanejanconsultasanidadasy
funcionesdeconversinexplcita.
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 5/7
11/2/2017 ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
Quizsnodebemosdedejarpasarelhechoquea
vecespuedesercontraproducenteeltenertodoen
ununasolaconsulta,yaquetododependerde
cmoestnformadostusdatos,asiporejemplo,
pudierasernecesarioqueseparesenvarias
consultasparadarlemayorinteracvidadatu
aplicacin,porejemplo:
Asipues,entremspasosintermediosdejes,
puedesenviarmsmensajesatuusuario
indicndoqualgoseesthaciendo,yaqueen
cuantoelnmerodedatosempieceacrecerpuede
serunaposibilidadaquesevayatardandocada
vezms,porejemplo,silopruebascon1000
datos...serrapidsimo,peroencuantolleguesa
losmillonesderegistros,setardar,ymuchos
usuariossientenquedosotressegundosesun
mundo,ymientrassetardalospuedesanimarun
poquito,asnosedesesperarnyempiecena
"tronar"tuaplicacinporque"yanoresponda"...
Elcuntolasseparesounastelodejoatucriterio,
yaquesiempredependerdetucasoespecco.
Seacualsealasolucintomada,debemosresumir
losiguiente:Esunerrorcomnelpensarquetodo
sepuedehacerconunasolaconsultaSELECTSQL,
aveceshayqueutilizarsubconsultas(oconsultas
anidadas),ynosoloproyeccionesdirectas.
Esperoqueestepequeotutoriallesseade
ulidad.
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 6/7
11/2/2017 ComunidaddeVisualFoxProenEspaol:Cmoycundousarsubconsultas...?SELECTSQL
EspartacoPalmaMartnez
Equetas:DBF
Recomendar esto en Google
1comentario:
Annimo 10denoviembrede2016,22:00
y que codigo deberia ulizar si necesito
encontrar el campo "Descripcion" si este se
encuentra en otra tabla para que se muestre
justocomolatabladeejemploqueestaalinicio
delarculo?
Responder
Escribeuncomentario...
Comentarcomo: Seleccionarperfil...
Publicar
Vistaprevia
Suscribirsea:Comentariosdelaentrada(Atom)
Temas
AcveX(14) API(104)Arculos(57)Automaon(22)Clases(29)Cdigode
barras(11)DBF(55)Fechayhora(43)Formularios(69)GDI(38)General
(48)Informes(26)Internet(44)Libros(15)Nocias(9) Runas(84)SGDB
(52)Traducciones(166)Ulidades(33)VFPx(19)WMI(1)
ComunidadVisualFoxProenEspaol2017.ContecnologadeBlogger.
https://comunidadvfp.blogspot.com/2004/12/comoycuandousarsubconsultasselect.html 7/7