En este grupo En todos

Foro de BAAN



UNION en sql en BaaN

Esther
Madrid, Espańa
Escrito por Esther
el 11/12/2007

żCómo puedo hacer un UNION entre dos o más select"s en BaaN?

Gracias.

Luis Reyes
Ecuador, Ecuador
Escrito por Luis Reyes
el 26/12/2007

Hola Esther puedes hacer de dos formas

1)

Select  tccom010. *, tdsls040.*

From tccom010, tdsls040

Where tccom010. Cuno = :tdsls040. Cuno

Selectdo

                sentencias

Endselect

|#***** de esta forma sacas los clientes a los que hemos realizados ventas



La segunda forma es

Select     tccom010.*

From tccom010

Selectdo

                   select    tdsls040.*

                    from tdsls040. Cuno = :tccom010. Cuno

                     selectdo

                                     senetencias

                     endselect

Endselect


Cualquier cosa escribeme a lreyes911@hotmail. Com


Un abrazo

Dr_fls
Madrid, Espańa
Escrito por Dr_fls
el 15/02/2008

Puff, esto tampoco...

Cuando necesito el unir el resultado devarias queries lo meto en una matriz

Dr_fls

Esther
Madrid, Espańa
Escrito por Esther
el 15/02/2008
"Puff, esto tampoco...
Cuando necesito el unir el resultado devarias queries lo meto en una matriz
dr_fls
"

por dr_fls (Febrero 2008)



Hola dr_fls,

No he conseguido ni hacer el left join, ni el union, pero cómo haces lo de la matriz?


Un saludo.

Dr_fls
Madrid, Espańa
Escrito por Dr_fls
el 15/02/2008

Hola Esther:

Hago la primera select, meto el resultado en una matriz, hago la segunda y meto el resultado en la misma matriz, luego trabajo con la matriz.

Qué quieres hacer exactamente

Te mando un ejemplo, aunque es un poco infumable.  Calcula el precio de compra de cada artículo sumando los pedidos abiertos en dos compańías distintas y calculando el precio medio. Luego lo escribe en el campo tiitm001. Prip y si el artículo no tiene stock y no ha tenido transacciones en el ańo lo actualiza.

|****************************** declaration section ***************************
declaration:

 long  rprt_id

 table ttdpur031
 table ttdpur040
 table ttdpur041
 table ttdsls040
 table ttdsls041
 table ttdsls045
 table ttiitm004
 table ttcmcs008
 table ttiitm001 | Items
 table ttiitm990

 extern domain tcitem         item. Update(9000), item. Actual, calc.item.f, calc.item.t
 extern domain tccuno  calc.cntr.f, calc.cntr.t
 extern domain tccitg  calc.citg.f, calc.citg.t
 extern domain tccpcc  calc. Cd
 extern domain tcccmt  calc. Meth
 extern  domain tcdate  calc. Date
 extern domain tcoqan  optm. Oqan
 extern domain tcoqan  optm.oqan.sub
 extern domain tcoqan  calc. Oqan
 extern domain tcyesno  actualize. Copr

 extern domain tcamnt  tot. Amth(9000)
 extern domain tcqana  tot. Quan(9000)
 extern domain tcpric  pre.200.ant(9000), pre.210.ant(9000), pre.200.nue(9000), pre.210.nue(9000)
 extern domain tcpric  pre.200.vie, pre.200.des, pre.210.vie, pre.210.des
  
 extern domain tccopr  std.200.ant(9000), std.210.ant(9000), std.200.nue(9000), std.210.nue(9000)
 extern domain tccopr  std.200.vie, std.200.des, std.210.vie, std.210.des

 extern domain tcitem  item 

 extern  domain tcyesno  act. 200(9000), act. 210(9000)
 extern domain tcyesno  actualiza. 200, actualiza. 210
 extern domain tcyesno  aus. 200(9000), aus. 210(9000)
 extern domain tcyesno  modif. 200(9000), modif. 210(9000)
 extern domain tcdate  ltpp.200.ant(9000), ltpp.210.ant(9000), ltpp.200.nue(9000), ltpp.210.nue(9000)

 extern domain tcdate  fecha. Valor, primer.de.ano, ultimo.de.ano
 extern domain tcratp  tarifa
 extern domain tcyesno  existe

 extern domain tcncmp  cia. 1, cia. 2, cia. Actual, tp. Cia, cia. Sares
 extern domain tcmcs. Str10 origen(9000), origen. 200

 extern domain tcpvat  tp. Factor
 extern domain tcsuno  tp. Supplier


|****************************** form section **********************************

Form. 1:
init. Form:
 get.screen.defaults()

|****************************** choice section ********************************

choice.cont.process:
on. Choice:
 cia. 1=200
 cia. 2=210
 cia. Sares=200
 cia. Actual=get. Compnr()
 determina. Fechas()
 tp. Cia=cia.1
 tp. Supplier="850004"
 busca. Tp()
 read.main.table()
 switch.to.company(cia. Actual)

|****************************** field section *********************************

|****************************** function section ******************************

Functions:

Function busca. Tp()
{

Tp. Factor=0

Select tdpur031. Disc
from tdpur031
where tdpur031. _index1={:tp. Supplier, "", 1} and
 tdpur031. Stdt <= :primer.de.ano and
 (tdpur031. Tdat >= :ultimo.de.ano or
 tdpur031. Tdat = 0) and
 tdpur031. _compnr=:tp. Cia
selectdo
 tp. Factor=tdpur031. Disc/100
selectempty
 message("It is not possible to determinate tp factor for " & tp. Supplier & " in company " & str$(tp. Cia))
endselect
}

Function determina. Fechas()
{
long hoy, ano, mes, dia_mes

Hoy=num.to.date(date. Num(), ano, mes, dia_mes)
primer=de=ano=LINK-date.to.num(ano, 01, 01)
ultimo=de=ano=LINK-date.to.num(ano, 12, 31)
}

Function read.main.table()
{
long count, n, i, m, c, d, ee200, ee210
 
 for count = 1 to 9000
  item. Update(1,count)=""
  act. 200(count)=tcyesno. No
  act. 210(count)=tcyesno. No
 endfor

 db.retry.point()
 
 n=1
 item. Update(1,1)="iiiiiiiiiiiiiiii"

 |Recorro todos los artículos presentes en SARES
 select  tiitm990. Item
 from  tiitm990
 where  tiitm990. _compnr = :cia. Sares
 order by tiitm990. Item
 selectdo
  |Busco el artículo Sares en la cia.1
  select tiitm001.*
  from tiitm001
  where tiitm001. _index1= {:tiitm990. Item} and
   tiitm001. Suno <> "" and
   tiitm001. _compnr= :cia.1
  selectdo
   |Para cada uno busco ordenes de venta abierta en cia.1
   select tdsls041. *, tdsls040.*
   from tdsls041, tdsls040
   where  tdsls041. _index2 = { "", :tiitm001. Item} and
    tdsls041. Orno refers to tdsls040 and
    (tdsls041. Oqua <> 0 and tdsls041. Dqua = 0)  or
     (tdsls041. Dqua <> 0 and tdsls041. Bqua <>0)) and
    tdsls041. _compnr=:cia. 1 and
    tdsls040. _compnr=:cia.1
   selectdo
    if item. Update(1,n)<>tiitm001. Item then
     n=n+1
    endif
    item. Update(1,n)=tdsls041. Item
    origen(1,n)="Sales"
    tot. Quan(n)=tot. Quan(n)+tdsls041. Oqua
    tot. Amth(n)=tot. Amth(n)+tdsls041. Amta*tdsls040. Rats
   selectempty
    |Si no hay ventas abiertas busco compras en cia.1
    select  tdpur041. *, tdpur040.*
    from tdpur041, tdpur041
    where  tdpur041. _index2={"", :tiitm001. Item} and
     tdpur041. Orno refers to tdpur040 and
     (tdpur041. Oqua <> 0 and tdpur041. Dqua = 0)  or
      (tdpur041. Dqua <> 0 and tdpur041. Bqua <>0)) and
     tdpur041. _compnr=:cia. 1 and
     tdpur040. _compnr=:cia.1
    selectdo
     if item. Update(1,n)<>tiitm001. Item then
      n=n+1
     endif
     item. Update(1,n)=tdpur041. Item
     origen(1,n)="Purchase"
     tot. Quan(n)=tot. Quan(n)+tdpur041. Oqua
     tp. Supplier=tiitm001. Suno
     tp. Cia=cia.1
     busca. Tp()
     tot. Amth(n)=tot. Amth(n)+tdpur041. Amta*tdpur040. Ratp/(1-tp. Factor)
    endselect
   endselect
  endselect

  |Busco el artículo Sares en la cia.2
  select tiitm001.*
  from tiitm001
  where tiitm001. _index1= {:tiitm990. Item} and
   tiitm001. Suno <> "" and
   tiitm001. _compnr= :cia.2
  selectdo
   |Para cada uno busco ordenes de venta abierta en cia.1
   select tdsls041. *, tdsls040.*
   from tdsls041, tdsls040
   where  tdsls041. _index2 = { "", :tiitm001. Item} and
    tdsls041. Orno refers to tdsls040 and
    (tdsls041. Oqua <> 0 and tdsls041. Dqua = 0)  or
     (tdsls041. Dqua <> 0 and tdsls041. Bqua <>0)) and
    tdsls041. _compnr=:cia. 2 and
    tdsls040. _compnr=:cia.2
   selectdo
    if item. Update(1,n)<>tiitm001. Item then
     n=n+1
     item. Update(1,n)=tdsls041. Item
     origen(1,n)="Sales"
    else
     |Si había datos de compras, al haber de ventas los ignoro
     if shiftl$(strip$(origen(1,n)))<> "Sales" then
      origen(1,n)="Sales"
      tot. Quan(n)=0
      tot. Amth(n)=0
     endif
    endif
    tot. Quan(n)=tot. Quan(n)+tdsls041. Oqua
    tot. Amth(n)=tot. Amth(n)+tdsls041. Amta*tdsls040. Rats
   selectempty
    |Si no hay ventas abiertas busco compras en cia.2
    select  tdpur041. *, tdpur040.*
    from tdpur041, tdpur041
    where  tdpur041. _index2={"", :tiitm001. Item} and
     tdpur041. Orno refers to tdpur040 and
     (tdpur041. Oqua <> 0 and tdpur041. Dqua = 0)  or
      (tdpur041. Dqua <> 0 and tdpur041. Bqua <>0)) and
     tdpur041. _compnr=:cia. 2 and
     tdpur040. _compnr=:cia.2
    selectdo
     if item. Update(1,n)<>tiitm001. Item then
      n=n+1
      item. Update(1,n)=tdpur041. Item
      origen(1,n)="Purchase"
      tot. Quan(n)=tdpur041. Oqua
      tp. Supplier=tiitm001. Suno
      tp. Cia=cia.2
      busca. Tp()
      tot. Amth(n)=tdpur041. Amta*tdpur040. Ratp/(1-tp. Factor)
     else
      |Si había datos de ventas ignoro estos.
      |Si eran de compras los sumo.
      if shiftl$(strip$(origen(1,n)))<> "Sales" then
       tot. Quan(n)=tot. Quan(n)+tdpur041. Oqua
       tp. Supplier=tiitm001. Suno
       tp. Cia=cia.2
       busca. Tp()
       tot. Amth(n)=tot. Amth(n)+tdpur041. Amta*tdpur040. Ratp/(1-tp. Factor)
      endif
     endif
    endselect
   endselect
  endselect
 endselect

Fecha. Valor=date. Num()
if not background then
 message("hay " & str$(n-1) & " para comprobar")
endif
c=0
d=0

For i=2 to n

 item. Actual=item. Update(1,i)

 pre.200.ant(i)=0
 std.200.ant(i)=0
 ltpp.200.ant(i)=0
 pre.200.nue(i)=0
 std.200.nue(i)=0
 ltpp.200.nue(i)=0

 |Actualizo el precio de compra de todos los artículos calculados (que hayan cambiado), en la 200.
 select  tiitm001. *,  tiitm004.*
 from tiitm001 for update, tiitm004
 where tiitm001. _index1={:item. Actual} and
  tiitm004. _index1={"", "", "", tiitm001. Cuni, tiitm001. Cupp} and
  tiitm001. _compnr=:cia. 1 and
  tiitm004. _compnr=:cia.1
 selectdo
  if tiitm001. Ccur <> "EUR" then
   select tcmcs008.*
   from tcmcs008
   where tcmcs008. _index1={:tiitm001. Ccur} and
    tcmcs008. Stdt < :fecha. Valor and
    tcmcs008. _compnr=:cia.1
   selectdo  
    tarifa=tcmcs008. Ratp
   selectempty
    tarifa=1
   endselect
  else
   tarifa=1
  endif
  pre.200.ant(i)=tiitm001. Prip
  std.200.ant(i)=tiitm001. Copr
  ltpp.200.ant(i)=tiitm001. Ltpp
  |Changes for Juarez Tp factor system
  tp. Supplier=tiitm001. Suno
  busca. Tp()
  if int(10000*tiitm001. Prip)<>int(10000*round(1-tp. Factor)*tiitm004. Conv*tot. Amth(i)/tot. Quan(i))/tarifa),4,1)) then
   tiitm001. Prip=round(1-tp. Factor)*tiitm004. Conv*tot. Amth(i)/tot. Quan(i))/tarifa),4,1) 
   tiitm001. Ltpp=date. Num()
   db. Update(ttiitm001, db. Retry)
   commit. Transaction()
   act. 200(i)=tcyesno. Yes
   c=c+1
  else
   act. 200(i)=tcyesno. No
  endif
  pre.200.nue(i)=tiitm001. Prip
  ltpp.200.nue(i)=tiitm001. Ltpp
 selectempty
  act. 200(i)=tcyesno. No
 endselect

 |Sólo marco para actualizar el Standar aquellos que cumplan las tres condiciones (no recepciones, no movimientos y no stock)
 if act. 200(i)=tcyesno. Yes then
  select tiitm001.*
  from tiitm001
  where tiitm001. _index1={:item. Actual} and
   tiitm001. _compnr=:cia. 1 and
   |Que no haya habido recepciones de compra
   not exists( select tdpur045.*
    from tdpur045
    where tdpur045. _index3={tiitm001. Item} and
     tdpur045. Srnb>0 and
     tdpur045. Dqua<>0 and
     tdpur045. Date >=:primer.de.ano and
     tdpur045. Date <=:ultimo.de.ano and
     tdpur045. _compnr= :cia. 1) and
   |Que no haya habido movimientos en el almacén
   not exists( select tdinv700.*
    from tdinv700
    where tdinv700. _index1={tiitm001. Item} and
     tdinv700. Trdt >= :primer.de.ano and
     tdinv700. Trdt <= :ultimo.de.ano and
     tdinv700. _compnr= :cia. 1) and
   |Que no haya Stock en el almacén
   not exists(  select tdinv001.*
    from tdinv001
    where tdinv001. _index2={tiitm001. Item} and
     tdinv001. Stoc <> 0 and
     tdinv001. _compnr= :cia. 1)
  selectdo
   act. 200(i)=tcyesno. Yes
   d=d+1
  selectempty
   act. 200(i)=tcyesno. No
  endselect
 endif

 pre.210.ant(i)=0
 std.210.ant(i)=0
 ltpp.210.ant(i)=0
 pre.210.nue(i)=0
 std.210.nue(i)=0
 ltpp.210.nue(i)=0

 |Actualizo el precio de compra de todos los artículos calculados (que hayan cambiado), en la 200.
 select  tiitm001. *,  tiitm004.*
 from tiitm001 for update, tiitm004
 where tiitm001. _index1={:item. Actual} and
  tiitm004. _index1={"", "", "", tiitm001. Cuni, tiitm001. Cupp} and
  tiitm001. _compnr=:cia. 2 and
  tiitm004. _compnr=:cia.2
 selectdo
  if tiitm001. Ccur <> "EUR" then
   select tcmcs008.*
   from tcmcs008
   where tcmcs008. _index1={:tiitm001. Ccur} and
    tcmcs008. Stdt < :fecha. Valor and
    tcmcs008. _compnr=:cia.2
   selectdo  
    tarifa=tcmcs008. Ratp
   selectempty
    tarifa=1
   endselect
  else
   tarifa=1
  endif
  pre.210.ant(i)=tiitm001. Prip
  std.210.ant(i)=tiitm001. Copr
  ltpp.210.ant(i)=tiitm001. Ltpp
  |Changes for Juarez Tp factor system
  tp. Supplier=tiitm001. Suno
  busca. Tp()
  if int(10000*tiitm001. Prip)<>int(10000*round(1-tp. Factor)*tiitm004. Conv*tot. Amth(i)/tot. Quan(i))/tarifa),4,1)) then
   tiitm001. Prip=round(1-tp. Factor)*tiitm004. Conv*tot. Amth(i)/tot. Quan(i))/tarifa),4,1) 
   tiitm001. Ltpp=date. Num()
   db. Update(ttiitm001, db. Retry)
   commit. Transaction()
   act. 210(i)=tcyesno. Yes
   c=c+1
  else
   act. 210(i)=tcyesno. No
  endif
  pre.210.nue(i)=tiitm001. Prip
  ltpp.210.nue(i)=tiitm001. Ltpp
 selectempty
  act. 210(i)=tcyesno. No
 endselect

 |Sólo marco para actualizar el Standar aquellos que cumplan las tres condiciones (no recepciones, no movimientos y no stock)
 if act. 210(i)=tcyesno. Yes then
  select tiitm001.*
  from tiitm001
  where tiitm001. _index1={:item. Actual} and
   tiitm001. _compnr=:cia. 2 and
   |Que no haya habido recepciones de compra
   not exists( select tdpur045.*
    from tdpur045
    where tdpur045. _index3={tiitm001. Item} and
     tdpur045. Srnb>0 and
     tdpur045. Dqua<>0 and
     tdpur045. Date >=:primer.de.ano and
     tdpur045. Date <=:ultimo.de.ano and
     tdpur045. _compnr= :cia. 2) and
   |Que no haya habido movimientos en el almacén
   not exists( select tdinv700.*
    from tdinv700
    where tdinv700. _index1={tiitm001. Item} and
     tdinv700. Trdt >= :primer.de.ano and
     tdinv700. Trdt <= :ultimo.de.ano and
     tdinv700. _compnr= :cia. 2) and
   |Que no haya Stock en el almacén
   not exists(  select tdinv001.*
    from tdinv001
    where tdinv001. _index2={tiitm001. Item} and
     tdinv001. Stoc <> 0 and
     tdinv001. _compnr= :cia. 2)
  selectdo
   act. 210(i)=tcyesno. Yes
   d=d+1
  selectempty
   act. 210(i)=tcyesno. No
  endselect
 endif

Endfor

|Calculo los costes standar en 200
if switch.to.company(cia. 1)= 1 then
 for i=2 to n
  if act. 200(i)=tcyesno. Yes then
   item. Actual=item. Update(1,i)
   calc=item.f.item. Update(1,i)
   calc=item.t.item. Update(1,i)
   calc.cntr.f=""
   calc.cntr.t=""
   calc.citg.f=""
   calc.citg.t="ZZZZZZ"
   calc. Cd="STD"
   calc. Meth=tcccmt.single.level
   calc. Date=fecha. Valor
   select tiitm001.*
   from tiitm001
   where tiitm001. _index1={:item. Actual} and
    tiitm001. _compnr=:cia.2
   selectdo
   endselect
   optm. Oqan=tiitm001. Ecoq
   optm=oqan.sub.tiitm001. Ecoq
   calc. Oqan=tiitm001. Ecoq
   actualize. Copr=tcyesno. Yes |yes
   export("spool. Device", "d66")
   zoom. To$("ticpr2210milu ", z. Session, "tiitm001. Item", "",0)
   select tiitm001. Item, tiitm001. Oprc, tiitm001. Copr, tiitm001. Ltcp
   from tiitm001
   where tiitm001. _index1={:item. Actual} and
    tiitm001. _compnr=:cia.1
   selectdo
    std.200.nue(i)=tiitm001. Copr
    if tiitm001. Ltcp=fecha. Valor then
     ee200=ee200+1
     modif. 200(i)=tcyesno. Yes
    else
     modif. 200(i)=tcyesno. No
    endif
   endselect
   if modif. 200(i)=tcyesno. Yes then
    select tdsls045.*
    from tdsls045 for update
    where tdsls045. _index8={"", :tiitm001. Item} and
     tdsls045. Oqua<>0 and
     tdsls045. Dqua=0 and
     tdsls045. _compnr=:cia.1
    selectdo
     tdsls045. Copr=tiitm001. Copr
     tdsls045. Coop=tiitm001. Oprc
     db. Update(ttdsls045, db. Retry)
    endselect
    commit. Transaction()
   endif
  else
   modif. 200(i)=tcyesno. No
   std.200.nue(i)=std.200.ant(i)
  endif
 endfor
else
 message("It is not possible change to company " & str$(cia. 1))
endif

|Calculo los costes standar en 210
if switch.to.company(cia. 2)= 1 then
 for i=2 to n
  if act. 210(i)=tcyesno. Yes then
   item. Actual=item. Update(1,i)
   calc=item.f.item. Update(1,i)
   calc=item.t.item. Update(1,i)
   calc.cntr.f=""
   calc.cntr.t=""
   calc.citg.f=""
   calc.citg.t="ZZZZZZ"
   calc. Cd="STD"
   calc. Meth=tcccmt.single.level
   calc. Date=fecha. Valor
   select tiitm001.*
   from tiitm001
   where tiitm001. _index1={:item. Actual} and
    tiitm001. _compnr=:cia.2
   selectdo
   endselect
   optm. Oqan=tiitm001. Ecoq
   optm=oqan.sub.tiitm001. Ecoq
   calc. Oqan=tiitm001. Ecoq
   actualize. Copr=tcyesno. Yes |yes
   export("spool. Device", "d66")
   zoom. To$("ticpr2210milu ", z. Session, "tiitm001. Item", "",0)
   select tiitm001. Item, tiitm001. Oprc, tiitm001. Copr, tiitm001. Ltcp
   from tiitm001
   where tiitm001. _index1={:item. Actual} and
    tiitm001. _compnr=:cia.2
   selectdo
    std.210.nue(i)=tiitm001. Copr
    if tiitm001. Ltcp=fecha. Valor then
     ee210=ee210+1
     modif. 210(i)=tcyesno. Yes
    else
     modif. 210(i)=tcyesno. No
    endif
   endselect
   if modif. 210(i)=tcyesno. Yes then
    select tdsls045.*
    from tdsls045 for update
    where tdsls045. _index8={"", :tiitm001. Item} and
     tdsls045. Oqua<>0 and
     tdsls045. Dqua=0 and
     tdsls045. _compnr=:cia.2
    selectdo
     tdsls045. Copr=tiitm001. Copr
     tdsls045. Coop=tiitm001. Oprc
     db. Update(ttdsls045, db. Retry)
    endselect
    commit. Transaction()
   endif
  else
   modif. 210(i)=tcyesno. No
   std.210.nue(i)=std.210.ant(i)
  endif
 endfor
else
 message("It is not possible change to company " & str$(cia. 2))
endif

|Imprimo resultados
rprt_id=brp. Open("rtiitmstndcosts","LJBACK-A", 1)

If rprt_id>0 then
 for i=2 to n
  if (modif. 200(i)=tcyesno. Yes or ltpp.200.ant(i)<>ltpp.200.nue(i)) or
     (modif. 210(i)=tcyesno. Yes or ltpp.210.ant(i)<>ltpp.210.nue(i)) then
   actualiza. 200=modif. 200(i)
   actualiza. 210=modif. 210(i)
   item=item. Update(1,i)
   pre=200=vie=LINK-pre.200.ant(i)
   pre=200=des=LINK-pre.200.nue(i)
   std=200=vie=LINK-std.200.ant(i)
   std=200=des=LINK-std.200.nue(i)
   pre=210=vie=LINK-pre.210.ant(i)
   pre=210=des=LINK-pre.210.nue(i)
   std=210=vie=LINK-std.210.ant(i)
   std=210=des=LINK-std.210.nue(i)
   origen. 200= origen(1,i)
   brp. Ready(rprt_id)
  endif
 endfor
 brp. Close(rprt_id)
endif
}

Luis Reyes
Ecuador, Ecuador
Escrito por Luis Reyes
el 15/02/2008

Algo similar al left join es la sentencia  "unref"

Ejemplo:

Select     tdsls040. *, tccom010.*

From    tdsls040, tccom010

Where  tdsls040. Cuno refers to  tccom010  unref skip        

Selectdo

                       sentencias

Endselect

|** lo que hace es que si no existe el cliente en el maestro no importa, igua presenta la orden de venta


Esther
Madrid, Espańa
Escrito por Esther
el 18/02/2008
Ja ja ja, gracias Luis, eres la cańa ;)
Pablocolombo Pablocolombo
Santa Fe, Argentina
Escrito por Pablocolombo Pablocolombo
el 31/07/2008

Luis - where  tdsls040. Cuno refers to  tccom010  unref skip? , no sera unref clear?

Unref skip es el INNER JOIN

En tu ejemplo anterior....

Select  tccom010. *, tdsls040.*
from tccom010, tdsls040
where tccom010. Cuno = :tdsls040. Cuno
selectdo
                sentencias
endselect
|#***** de esta forma sacas los clientes a los que hemos realizados ventas

De esta forma te da un producto cartesiano de TODOS los clientes por TOOODAS las ordenes de ventas ya que te falta el JOIN entre clientes. Probablemente el DBA quiera pegarte
 
 
La segunda forma es
select     tccom010.*
from tccom010
selectdo
                   select    tdsls040.*
                    from tdsls040. Cuno = :tccom010. Cuno
                     selectdo
                                     senetencias
                     endselect
endselect
 

Esto NO ES UN UNION , es simplemente anidar cursores. Probablemente tu key user quiera pegarte

Esta es la sentencia en LN, depende del  portngset de Baan V o IV por ahi algunos les funcione


SELECT <select list> FROM <from list> [ WHERE < search condition > ] [ GROUP BY <group list> [ HAVING < search condition > ] ] [ SUBHINT ... ] [ UNION ALL SELECT <select list> FROM <from list> [ WHERE < search condition > ] [ GROUP BY <group list> [ HAVING < search condition > ] ] [ SUBHINT ... ] ]...[ ORDER BY <order by list> [ WITH RETRY [REPEAT LAST ROW] ]] [ < set specification > ] [ HINT ...]