Página 1 de 1

Limitar a um registro de determinada tabela

Enviado: 15 Abr 2020 17:08
por JoséQuintas
Tem algum jeito prático disto:

Código: Selecionar todos

    WITH OBJECT cnSQL
      :cSql := "SELECT IDPEDIDO, PDVALNOT, PDDATEMI, PDCADASTRO, PDVENDEDOR, JPFINAN.IDFINAN," + ;
         " JPFINAN.FINUMDOC, JPFINAN.FIPARCELA, JPFINAN.FIPEDIDO, JPFINAN.FIDATEMI," + ;
         " JPFINAN.FIDATVEN, JPFINAN.FIVALOR, JPFINAN.FIDATPAG, JPFINAN.FIDATCAN, JPFINAN.FIOBS," + ;
         " JPFINAN.FICADASTRO, JPCADASTRO.CDNOME, JPNOTFIS.IDNOTFIS, JPITPED.IPCFOP" + ;
         " FROM JPPEDIDO" + ;
         " LEFT JOIN JPFINAN ON JPFINAN.FIPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPFINAN.FICADASTRO" + ;
         " LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " WHERE IDPEDIDO = " + NumberSQL( mIdPedido ) + ;
         " ORDER BY IDFINAN"
      :Execute()
Estou puxando o financeiro de um pedido, mas preciso do CFOP de um dos produtos. (JPITPED)
Precisaria limitar a 1 produto, ao mesmo tempo que não posso limitar no financeiro.

Limitar a um registro de determinada tabela

Enviado: 15 Abr 2020 17:26
por JoséQuintas
Resolvido.
Tabela temporária ITEMPED com um único registro.

Código: Selecionar todos

   WITH OBJECT cnSQL
      :cSql := "SELECT IDPEDIDO, PDVALNOT, PDDATEMI, PDCADASTRO, PDVENDEDOR, JPFINAN.IDFINAN," + ;
         " JPFINAN.FINUMDOC, JPFINAN.FIPARCELA, JPFINAN.FIPEDIDO, JPFINAN.FIDATEMI," + ;
         " JPFINAN.FIDATVEN, JPFINAN.FIVALOR, JPFINAN.FIDATPAG, JPFINAN.FIDATCAN, JPFINAN.FIOBS," + ;
         " JPFINAN.FICADASTRO, JPCADASTRO.CDNOME, JPNOTFIS.IDNOTFIS, ITEMPED.IPCFOP" + ;
         " FROM JPPEDIDO" + ;
         " LEFT JOIN JPFINAN ON JPFINAN.FIPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPFINAN.FICADASTRO" + ;
         " LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN ( " + ;
            " SELECT IDITPED, IPPEDIDO, IPCFOP FROM JPITPED " + ;
            " WHERE IPPEDIDO = " + NumberSQL( mIdPedido ) + " LIMIT 1 ) AS ITEMPED" + ;
            " ON ITEMPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " WHERE IDPEDIDO = " + NumberSQL( mIdPedido ) + ;
         " ORDER BY IDFINAN"
      :Execute()
esta parte:

Código: Selecionar todos

         " LEFT JOIN ( " + ;
            " SELECT IDITPED, IPPEDIDO, IPCFOP FROM JPITPED " + ;
            " WHERE IPPEDIDO = " + NumberSQL( mIdPedido ) + " LIMIT 1 ) AS ITEMPED" + ;
            " ON ITEMPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
e com certeza, esta no SELECT:

Código: Selecionar todos

ITEMPED.IPCFOP

Limitar a um registro de determinada tabela

Enviado: 15 Abr 2020 17:34
por JoséQuintas
Com certeza, depois da migração vou fazer uma boa remodelagem nos arquivos/tabelas.
Só não sei ainda qual... kkkkk

Nesse caso, um indicativo do CFOP principal no pedido seria suficiente pra não pesquisar nos produtos.
Pensar nisso depois....