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
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.
deixe-me dizer algumas palavras