What’s this Join’s syntax error?

Asked

Viewed 288 times

0

When do I use this join, appears that there is a "missing operator" syntax error, someone can tell me where it is and why this error occurs?

SELECT tbEquipamento_Movimentacao.NUMERO_ATIVO_FK,
    tbEquipamento.TIPO_EQUIPAMENTO,
    tbMovimentacao.DATA,
    tbTipo_Movimentacao.TIPO_MOVIMENTACAO,
    tbTecnico.NOME_TECNICO,
    tbUsuario.NOME_USUARIO
FROM tbEquipamento_Movimentacao
INNER JOIN tbEquipamento 
    ON tbEquipamento.NUMERO_ATIVO = tbEquipamento_Movimentacao.NUMERO_ATIVO_FK
INNER JOIN tbMovimentacao INNER JOIN tbTipo_Movimentacao INNER JOIN tbTecnico INNER JOIN tbUsuario
    ON tbUsuario.MATRICULA_USUARIO = tbMovimentacao.MATICULA_USUARIO_FK
    ON tbTecnico.MATRICULA_TECNICO = tbMovimentacao.MATRICULA_TECNICO_FK
    ON tbTipo_Movimentacao.COD_TIPO_MOVIMENTACAO = tbMovimentacao.COD_TIPO_MOVIMENTACAO_FK
    ON tbMovimentacao.COD_MOVIMENTACAO =  tbEquipamento_Movimentacao.COD_MOVIMENTACAO_FK
  • Has INNER Join without comparison

  • I don’t understand... which ?

4 answers

1

You should always use the inner join as follows:

INNER JOIN tbEquipamento ON tbEquipamento.NUMERO_ATIVO = tbEquipamento_Movimentacao.NUMERO_ATIVO_FK

That is, do the Inner/left/right Join in the table and make the comparison in the other table.

  • I never used Left/Right. How would I look in this case ?

  • devmedia has some really cool content. From a look https://www.devmedia.com.br/clausulas-inner-join-left-join-e-right-join-no-sql-server/18930

0

Resolved as follows: SELECT tbEquipment.NUMERO_ATIVO, tbEquipamento.TIPO_EQUIPAMENTO, tbMovimentacao.DATA, tbTipo_Movimentacao.TIPO_MOVIMENTACAO, tbTecnico.NOME_TECNICO, tbUsuario.NOME_USUARIO FROM tbTipo_Movimentacao INNER JOIN (tbUsuario INNER JOIN (tbTecnico INNER JOIN (tbMovimentacao INNER JOIN (tbEquipment INNER JOIN tbEquipment ON tbEquipment.NUMERO_ATIVO = tbEquipment.NUMERO_ATIVO_FK) ON tbMovimentacao.COD_MOVIMENTACAO = tbEquipamento_Movimentacao.COD_MOVIMENTACAO_FK) ON tbTecnico.MATRICULA_TECNICO = tbMovimentacao.MATRICULA_TECNICO_FK) ON tbUsuario.MATRICULA_USUARIO = tbMovimentacao.MATICULA_USUARIO_FK) ON tbTipo_Movimentacao.COD_TIPO_MOVIMENTACAO = tbMovimentacao.COD_TIPO_MOVIMENTACAO_FK;

0

The mistake is that you grouped the join and then the on.

The structure JOIN tabela ON campo_1 = campo_2 must at all times be maintained; that is, the "join together" a table, you must indicate the link field before join together the next, getting the consultation like this:

SELECT tbEquipamento_Movimentacao.NUMERO_ATIVO_FK,
    tbEquipamento.TIPO_EQUIPAMENTO,
    tbMovimentacao.DATA,
    tbTipo_Movimentacao.TIPO_MOVIMENTACAO,
    tbTecnico.NOME_TECNICO,
    tbUsuario.NOME_USUARIO
FROM tbEquipamento_Movimentacao
INNER JOIN tbEquipamento ON tbEquipamento.NUMERO_ATIVO = tbEquipamento_Movimentacao.NUMERO_ATIVO_FK
INNER JOIN tbMovimentacao ON tbMovimentacao.COD_MOVIMENTACAO =  tbEquipamento_Movimentacao.COD_MOVIMENTACAO_FK
INNER JOIN tbTipo_Movimentacao ON tbTipo_Movimentacao.COD_TIPO_MOVIMENTACAO = tbMovimentacao.COD_TIPO_MOVIMENTACAO_FK
INNER JOIN tbTecnico ON tbTecnico.MATRICULA_TECNICO = tbMovimentacao.MATRICULA_TECNICO_FK
INNER JOIN tbUsuario ON tbUsuario.MATRICULA_USUARIO = tbMovimentacao.MATICULA_USUARIO_FK

Obs: realize that the order of on needed to be changed, since the condition is specific to the table being added to the query. In other words, when making Join with the table tbTipo_Movimentacao you need to indicate a field of a table that "is already in consultation" in the case of, tbMovimentacao.

  • 1

    Good afternoon Fine, all right ? Man, I like your explanation, you added some things you didn’t know yet. But the code gave a "Syntax error (missing operator) in query expression 'tbEquipment.NUMERO_ATIVO = tbEquipment [...]"

  • I don’t know if it’s gonna be the case with ms-access, but tries to play the on in the same line as join (without giving enter). Anyway, I will change the answer..

  • It really wasn’t that, it continued the same mistake

0


I found a problem just like yours no stackoverflow in English.

According to the answer, when there are multiple Joins, Access requires the use of parentheses.

Documentation of Microsoft support.

As I do not have MS Access, I have no way to simulate your query to validate the syntax.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.