sql >> Databáze >  >> RDS >> Mysql

Potřebuji znovu pomoc se spojováním tabulek

Namísto filtrování podle přesného uživatelského ID byste měli zkontrolovat, zda uživatel souvisí s problémem, například takto:

select
  t.title,
  group_concat(
    case when tu.type = 1 then 
      concat(u.firstname, ' ', u.lastname)
    end) as creator,
  t.priority,
  t.date,
  group_concat(
    case when tu.type = 2 then 
      concat(u.firstname, ' ', u.lastname)
    end SEPARATOR ' - ') as users
from
  tickets t
  inner join tickets_users tu on tu.ticketid = t.id
  inner join users u on u.id = tu.userid
where 
  exists (
    select 
      'x' 
    from 
      tickets_users tu2 
    where 
      tu2.ticketid = t.id and 
      tu2.userid = <youruserid> and 
      tu2.type = 1)
group by
  t.id;

Pro <youruserid> můžete vyplnit požadované uživatelské jméno. Tento dotaz vrátí všechny problémy, které nahlásil daný uživatel (typ =1). Ale pro všechny tyto problémy jsou stále vráceni všichni související uživatelé, takže výsledek vašeho dotazu je stále úplný.




  1. Jak zjistit kořenové heslo MySQL

  2. Návrat k datům bez víkendů

  3. Pomalý dotaz na výsledky vyhledávání založený na poloze

  4. jak udělit oprávnění uživatele ke konkrétnímu schématu?