Query MySQL three tables

0

I'm trying to make an query in the MYSQL database, but the query is not coming back what I wanted. I want to make a query where I return all modules and modules that the company has with the where clause in Empresa_ID .

MySQL Attempt:

   SELECT empresas.empresa_id
         ,empresas.empresa_razaosocial
         ,modulos.modulo_id
         ,modulos.modulo_nome
         ,empresa_modulo.modulo_id
     FROM empresa_modulo
    RIGHT JOIN modulos
       ON modulos.modulo_id = empresa_modulo.modulo_id
    RIGHT JOIN empresas
       ON empresas.empresa_id = empresa_modulo.empresa_id
   UNION
   SELECT empresas.empresa_id
         ,empresas.empresa_razaosocial
         ,modulos.modulo_id
         ,modulos.modulo_nome
         ,empresa_modulo.modulo_id
     FROM empresa_modulo
    RIGHT JOIN modulos
       ON modulos.modulo_id = empresa_modulo.modulo_id
    RIGHT JOIN empresas
       ON empresa_modulo.empresa_id = empresas.empresa_id
    WHERE empresas.empresa_id = 1;

Result:

I made this query, but I did not succeed. How can I perform this query?

A query that returns all the modules and modules that the company has.

    
asked by anonymous 08.06.2018 / 16:34

1 answer

2

Joan, the result print is what you expect, right?

Your query is wrong, since you are wanting every module there is no need for you to use right join .

--Nesse select você vai relacionar todos os modulo que tem relacionamento.
SELECT e.empresa_id
      ,e.empresa_razaosocial
      ,m.modulo_id
      ,m.modulo_nome
      ,em.modulo_id
  FROM empresa_modulo em
  JOIN modulos m
    ON m.modulo_id = em.modulo_id
  JOIN empresas e
    ON e.empresa_id = em.empresa_id
---Se adicionar o where, você selecionará apenas a empresa com o id 1.
 WHERE e.empresa_id = 1;

Do you know the difference between Union and Union ALL ?

When you use UNION it will return only the unique records, with ALL you will have repeated row.

Try using the following:

SELECT e.empresa_id
      ,e.empresa_razaosocial
      ,m.modulo_id
      ,m.modulo_nome
      ,em.modulo_id
  FROM empresa_modulo em
 CROSS JOIN modulos m
    ON m.modulo_id = em.modulo_id
 CROSS JOIN empresas e
    ON e.empresa_id = em.empresa_id;
    
08.06.2018 / 18:54