Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso consultar a tabela dentro da tabela?


Você pode usar uma variável para verificar se o último id é igual ao id atual e, nesse caso, produzir null ou ''.
select
  case when c.ClientId <> @clientid then c.Name else '' end as ClientName,
  case when c.ClientId <> @clientid then @ClientId := c.ClientId else '' end as ClientId,
  p.ContactId,
  p.Name as ContactName
from
  Clients c
  inner join Contacts p on p.ClientId = c.Clientid
  , (select @clientid := -1) x
order by
  c.ClientId, p.ContactId

Exemplo:http://sqlfiddle.com/#!2/658e4c/6

Observe que isso é um pouco hacky. Eu deliberadamente fiz ClientId o segundo campo, para que eu pudesse alterar e retornar a variável clientId no mesmo campo. Em outros casos mais elaborados, talvez seja necessário fazer isso em um campo separado. Mas para eliminar esse campo de espaço reservado do resultado, você terá que incorporar a consulta inteira em uma subseleção e definir os campos desejados na ordem correta na consulta de nível superior.