sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo consultar una tabla dentro de una tabla?

Puede usar una variable para verificar si la última identificación es igual a la identificación actual y, en ese caso, generar un valor nulo o '' en su lugar.

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

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

Tenga en cuenta que esto es un poco hacky. Hice deliberadamente ClientId el segundo campo, para poder cambiar y devolver la variable clientId en el mismo campo. En otros casos más elaborados, es posible que deba hacerlo en un campo separado. Pero para eliminar ese campo de marcador de posición del resultado, deberá incrustar la consulta completa en una subselección y definir los campos deseados en el orden correcto en la consulta de nivel superior.