Junção à esquerda de três tabelas com junção interna em dois no mysql

user10127693

Eu tenho cinco mesas

tableevents

eventname eventid openingdate eventtype
alpha      2222    2019-08-07  44
beta      22299    2019-08-09  48
gama      24555    2019-06-9   47

tablesectora

eventid resultstatus liability userid  profitsectora

tablesectorb

eventid resultstatus liability userid    profitsectorb

tablesectorc

eventid resultstatus liability userid    profitsectorc

users

userid registrar_id 
io      manager
co      manager

o que estou procurando é a seguinte coisa para regsitar_id suponha (gerente)

1-mostra dados no painel do gerenciador se qualquer ID de usuário (cujo ID de registro é gerenciador) possui dados em um de três ou em dois ou em todas as tabelas tablesectora, tablesectorb e tablesectorc (três tabelas podem ter o mesmo eventid e não podem ter o mesmo eventid) 2- também mostra o nome do evento e, id do evento e data de abertura

SELECT distinct tl.eventid eventid ,ul.resultstatus resultstatus,ce.eventname eventname,ce.opendate opendate,ce.eventtypeid eventtypeid ,u.registrar_id from users u, tablesectora tl left join tablesectorb uf on uf.eventid=tl.eventid left join tablesectorc ul on ul.eventid=tl.eventid left join tableevents ce on ce.eventid=ul.eventid and u.userid=tl.userid and where u.registar_id='manager'

A consulta está funcionando, mas não consigo obter a saída esperada

A saída esperada deve ser

se apenas tablesectora tiver dados

setor de mesa

eventid resultstatus liability userid  profitsectora 
2222       complted   2000      io       20000   

Resultado

eventname eventid openingdate resultstatus  eventtype
alpha      2222    2019-08-07  completed     44

se tablesectora eb ambos tiverem dados

setor de mesa

eventid resultstatus liability userid  profitsectora 
2222       complted   2000      io       20000  

setor de mesa

eventid resultstatus liability userid  profitsectorb
2222       complted   200000     io       200000 
22299      completed  555666     co       56666 

Resultado

eventname eventid openingdate resultstatus  eventtype
alpha      2222    2019-08-07  completed     44
beta       22299   2019-08-09   completed    48

então você vê que eu só quero o eventid acumulado, eventname, eventtype e, resultstatus (resultstatus será o mesmo para eventid evenry em todas as tabelas

Thorsten Kettner

Não importa em qual das três tabelas de setor ocorre um evento. Portanto, você pode tratar as mesas como uma só, colando-as com UNION ALL. (Para mim, até parece um modelo de dados ruim, e você deve preferir ter uma tabela com uma coluna de tipo de setor em vez de uma tabela por setor.)

Cole as três linhas das tabelas, limite para gerentes, agregue sobre ID de evento e junte.

select e.eventname, e.eventid, e.openingdate, e.eventtype, s.resultstatus
from tableevents e
join
(
  select eventid, max(resultstatus) as resultstatus
  from
  (
    select eventid, resultstatus, userid from tablesectora
    union all
    select eventid, resultstatus, userid from tablesectorb
    union all
    select eventid, resultstatus, userid from tablesectorc
  ) glued
  where userid in (select userid from users where registrar_id = 'manager')
  group by eventid
) s on s.eventid = e.eventid
order by e.eventid;

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

É possível usar AND com três tabelas e usar junção à esquerda / junção interna

Problemas de MySQL, tentando fazer uma junção externa esquerda com três tabelas

Junção interna do MySQL com junção externa esquerda

consulta mysql de 2 tabelas com junção interna

erro de sintaxe mysql com junção interna em duas tabelas

Junção interna MySql de 2 tabelas

SQL: junção à esquerda com três tabelas

Junção interna de dois `HashMap`s em Rust

Ele cruza duas tabelas com junção à esquerda com dois campos em linq

junção interna de três tabelas com mesa vazia para pesquisa

Combine três tabelas com junção de dois com união

contando em MySQL com tabelas de junção

Junção à esquerda de 2 tabelas com o mesmo ID

Junção à esquerda de 2 tabelas com o mesmo ID

Transformação JPA junção esquerda em junção interna

Junção interna do MySQL com 3 tabelas

Evita duplicatas na junção à esquerda combinada com junção interna no MySQL

Junção interna de duas tabelas com resultados de data

MySQL Atualizar consulta de tabelas de junção interna

Consulta de junção interna com duas tabelas

mostrar diferentes colunas de diferentes tabelas com junção interna

Junção interna de várias tabelas na consulta mysql

junção interna de duas tabelas em dois campos - combinando em mês e ano para o campo de data oracle sql

consulta mysql adicionando colunas de diferentes tabelas com junção à esquerda para valores nulos

mysql inserir de duas tabelas em uma usando junção interna e max ()

junção à esquerda e grupo de junção interna

LEFT JOIN em três tabelas (com tabela de junção)

Junção de três tabelas do MySQL

Consulta de junção do MySQL em três tabelas conectadas entre si