×
Linguagem de Programação ADVPL
Perguntas Sql com 3 tabelas
- diegoo_martins
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 175
- Obrigados Recebidos: 0
8 anos 2 meses atrás #31080
por diegoo_martins
Sql com 3 tabelas foi criado por diegoo_martins
Pessoal, bom dia.
Tenho uma consulta SQL que funciona perfeitamente com 2 tabelas. Preciso inserir a 3ª tabela SZ7 relacionando o campo Z7_NUM, como faço?
cQuery := "SELECT Z3_NUM,Z3_OF,Z3_CLIENTE,Z3_TPFRETE,Z3_NATUREZ,Z3_CONDPAG,Z3_TRANSP,Z3_PESOL,Z3_PBRUTO,"+;
"Z3_VOLUME1,Z3_FORNECE,Z3_SERVICO,Z3_QTDSERV,Z3_VLRSERV,Z3_UMSERV,Z3_ORDFABR, Z3_ESPECIE, Z3_LOCENTR, Z3_PEDCLIE, Z3_OBS,"+;
"Z4_PRODUTO,Z4_DESC,Z4_NUM,Z3_EMISSAO,Z4_ITEM,Z4_QTDVEN,Z4_VLRUNIT, Z4_UM, Z4_NFORI"
cQuery += " FROM " + RetSqlName("SZ3") + " SZ3 "
cQuery += " JOIN " + RetSqlName("SZ4") + " SZ4"
cQuery += " ON SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " WHERE SZ3.Z3_NUM BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' "
cQuery += " AND SZ3.D_E_L_E_T_ = '' "
cQuery += " ORDER BY Z3_NUM"
TCQUERY cQuery NEW ALIAS "TRBSZ3"
cQuery := ChangeQuery(cQuery)
Tenho uma consulta SQL que funciona perfeitamente com 2 tabelas. Preciso inserir a 3ª tabela SZ7 relacionando o campo Z7_NUM, como faço?
cQuery := "SELECT Z3_NUM,Z3_OF,Z3_CLIENTE,Z3_TPFRETE,Z3_NATUREZ,Z3_CONDPAG,Z3_TRANSP,Z3_PESOL,Z3_PBRUTO,"+;
"Z3_VOLUME1,Z3_FORNECE,Z3_SERVICO,Z3_QTDSERV,Z3_VLRSERV,Z3_UMSERV,Z3_ORDFABR, Z3_ESPECIE, Z3_LOCENTR, Z3_PEDCLIE, Z3_OBS,"+;
"Z4_PRODUTO,Z4_DESC,Z4_NUM,Z3_EMISSAO,Z4_ITEM,Z4_QTDVEN,Z4_VLRUNIT, Z4_UM, Z4_NFORI"
cQuery += " FROM " + RetSqlName("SZ3") + " SZ3 "
cQuery += " JOIN " + RetSqlName("SZ4") + " SZ4"
cQuery += " ON SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " WHERE SZ3.Z3_NUM BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' "
cQuery += " AND SZ3.D_E_L_E_T_ = '' "
cQuery += " ORDER BY Z3_NUM"
TCQUERY cQuery NEW ALIAS "TRBSZ3"
cQuery := ChangeQuery(cQuery)
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
8 anos 2 meses atrás #31082
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Sql com 3 tabelas
cQuery := "SELECT Z3_NUM,Z3_OF,Z3_CLIENTE,Z3_TPFRETE,Z3_NATUREZ,Z3_CONDPAG,Z3_TRANSP,Z3_PESOL,Z3_PBRUTO,"+;
"Z3_VOLUME1,Z3_FORNECE,Z3_SERVICO,Z3_QTDSERV,Z3_VLRSERV,Z3_UMSERV,Z3_ORDFABR, Z3_ESPECIE, Z3_LOCENTR, Z3_PEDCLIE, Z3_OBS,"+;
"Z4_PRODUTO,Z4_DESC,Z4_NUM,Z3_EMISSAO,Z4_ITEM,Z4_QTDVEN,Z4_VLRUNIT, Z4_UM, Z4_NFORI, Z7.... "
cQuery += " FROM " + RetSqlName("SZ3") + " SZ3 "
cQuery += " JOIN " + RetSqlName("SZ4") + " SZ4"
cQuery += " ON SZ4.Z4_FILIAL = " + xFilial("SZ4") + " AND SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " JOIN " + RetSqlName("SZ7") + " SZ7"
cQuery += " ON SZ7.Z7_FILIAL = " + xFilial("SZ7") + " AND SZ3.Z3_NUM = SZ7.Z7_NUM"
cQuery += " WHERE SZ3.Z3_NUM BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' "
cQuery += " AND SZ3.D_E_L_E_T_ = '' "
cQuery += " AND SZ7.D_E_L_E_T_ = '' "
cQuery += " ORDER BY Z3_NUM"
TCQUERY cQuery NEW ALIAS "TRBSZ3"
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- diegoo_martins
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 175
- Obrigados Recebidos: 0
8 anos 2 meses atrás #31085
por diegoo_martins
Respondido por diegoo_martins no tópico Sql com 3 tabelas
Luiz, bom dia.
Coloquei a query que vc passou e deu error.log;
Error.log:
THREAD ERROR (Diego Martins, FENIX) 12/09/2016 10:45:38
: Error : 156 (37000) (RC=-1) - [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near the keyword 'AND'. ( From tMSSQLConnection::GetQueryFile )
Query:
cQuery := "SELECT Z3_NUM,Z3_OF,Z3_CLIENTE,Z3_TPFRETE,Z3_NATUREZ,Z3_CONDPAG,Z3_TRANSP,Z3_PESOL,Z3_PBRUTO,"+;
"Z3_VOLUME1,Z3_FORNECE,Z3_SERVICO,Z3_QTDSERV,Z3_VLRSERV,Z3_UMSERV,Z3_ORDFABR, Z3_ESPECIE, Z3_LOCENTR, Z3_PEDCLIE, Z3_OBS,"+;
"Z4_PRODUTO,Z4_DESC,Z4_NUM,Z3_EMISSAO,Z4_ITEM,Z4_QTDVEN,Z4_VLRUNIT, Z4_UM, Z4_NFORI, Z7_NUM, Z7_SERVICO,Z7_QTDSERV,Z7_VALOR,Z7_UM,Z7_ORDFABR "
cQuery += " FROM " + RetSqlName("SZ3") + " SZ3 "
cQuery += " JOIN " + RetSqlName("SZ4") + " SZ4"
cQuery += " ON SZ4.Z4_FILIAL = " + xFilial("SZ4") + " AND SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " JOIN " + RetSqlName("SZ7") + " SZ7"
cQuery += " ON SZ7.Z7_FILIAL = " + xFilial("SZ7") + " AND SZ3.Z3_NUM = SZ7.Z7_NUM"
cQuery += " WHERE SZ3.Z3_NUM BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' "
cQuery += " AND SZ3.D_E_L_E_T_ = '' "
cQuery += " AND SZ7.D_E_L_E_T_ = '' "
cQuery += " ORDER BY Z3_NUM"
TCQUERY cQuery NEW ALIAS "TRBSZ3"
Coloquei a query que vc passou e deu error.log;
Error.log:
THREAD ERROR (Diego Martins, FENIX) 12/09/2016 10:45:38
: Error : 156 (37000) (RC=-1) - [Microsoft][SQL Server Native Client 10.0][SQL Server]Incorrect syntax near the keyword 'AND'. ( From tMSSQLConnection::GetQueryFile )
Query:
cQuery := "SELECT Z3_NUM,Z3_OF,Z3_CLIENTE,Z3_TPFRETE,Z3_NATUREZ,Z3_CONDPAG,Z3_TRANSP,Z3_PESOL,Z3_PBRUTO,"+;
"Z3_VOLUME1,Z3_FORNECE,Z3_SERVICO,Z3_QTDSERV,Z3_VLRSERV,Z3_UMSERV,Z3_ORDFABR, Z3_ESPECIE, Z3_LOCENTR, Z3_PEDCLIE, Z3_OBS,"+;
"Z4_PRODUTO,Z4_DESC,Z4_NUM,Z3_EMISSAO,Z4_ITEM,Z4_QTDVEN,Z4_VLRUNIT, Z4_UM, Z4_NFORI, Z7_NUM, Z7_SERVICO,Z7_QTDSERV,Z7_VALOR,Z7_UM,Z7_ORDFABR "
cQuery += " FROM " + RetSqlName("SZ3") + " SZ3 "
cQuery += " JOIN " + RetSqlName("SZ4") + " SZ4"
cQuery += " ON SZ4.Z4_FILIAL = " + xFilial("SZ4") + " AND SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " JOIN " + RetSqlName("SZ7") + " SZ7"
cQuery += " ON SZ7.Z7_FILIAL = " + xFilial("SZ7") + " AND SZ3.Z3_NUM = SZ7.Z7_NUM"
cQuery += " WHERE SZ3.Z3_NUM BETWEEN '" + mv_par01 + "' AND '" + mv_par02 + "' "
cQuery += " AND SZ3.D_E_L_E_T_ = '' "
cQuery += " AND SZ7.D_E_L_E_T_ = '' "
cQuery += " ORDER BY Z3_NUM"
TCQUERY cQuery NEW ALIAS "TRBSZ3"
Por favor Acessar ou Registrar para participar da conversa.
- diegoo_martins
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 175
- Obrigados Recebidos: 0
8 anos 2 meses atrás #31087
por diegoo_martins
Respondido por diegoo_martins no tópico Sql com 3 tabelas
Luiz,
Alterei as linhas abaixo e funcionou, porém está duplicando os registros.
cQuery += " ON SZ4.Z4_FILIAL = " + xFilial("SZ4") + " AND SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " ON SZ7.Z7_FILIAL = " + xFilial("SZ7") + " AND SZ3.Z3_NUM = SZ7.Z7_NUM"
PARA:
cQuery += " ON SZ3.Z3_NUM = SZ4.Z4_NUM "
cQuery += " ON SZ3.Z3_NUM = SZ7.Z7_NUM "
Att,
Alterei as linhas abaixo e funcionou, porém está duplicando os registros.
cQuery += " ON SZ4.Z4_FILIAL = " + xFilial("SZ4") + " AND SZ3.Z3_NUM = SZ4.Z4_NUM"
cQuery += " ON SZ7.Z7_FILIAL = " + xFilial("SZ7") + " AND SZ3.Z3_NUM = SZ7.Z7_NUM"
PARA:
cQuery += " ON SZ3.Z3_NUM = SZ4.Z4_NUM "
cQuery += " ON SZ3.Z3_NUM = SZ7.Z7_NUM "
Att,
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
8 anos 2 meses atrás #31088
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Sql com 3 tabelas
Blz Diego, então brother ai precisaria entender o que é cada tabela, pois não tenho como saber, tenta então colocar SELECT DISTINCT no começo.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- diegoo_martins
- Autor do Tópico
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 175
- Obrigados Recebidos: 0
8 anos 2 meses atrás - 8 anos 2 meses atrás #31089
por diegoo_martins
Respondido por diegoo_martins no tópico Sql com 3 tabelas
Blza Luiz..Então, desenvolvi uma rotina em MVC modelo 3 e criei o relatório em anexo para extrair as informações.
O campo de relacionamento entre as 3 tabelas é o Z3_NUM = Z4_NUM = Z7NUM
Tabelas:
SZ3 - Cabeçalho
SZ4 - Itens de Retorno
SZ7 - Itens de Faturamento (é impresso no máximo 10 itens de Faturamento por Solicitação)
O campo de relacionamento entre as 3 tabelas é o Z3_NUM = Z4_NUM = Z7NUM
Tabelas:
SZ3 - Cabeçalho
SZ4 - Itens de Retorno
SZ7 - Itens de Faturamento (é impresso no máximo 10 itens de Faturamento por Solicitação)
Ultima edição: 8 anos 2 meses atrás por diegoo_martins.
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.154 segundos