Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je interroger une table dans une table ?

Vous pouvez utiliser une variable pour vérifier si le dernier identifiant est égal à l'identifiant actuel, et dans ce cas afficher null ou '' à la place.

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

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

Remarque, c'est un peu hacky. J'ai délibérément fait de ClientId le deuxième champ, afin de pouvoir modifier et renvoyer la variable clientId dans le même champ. Dans d'autres cas plus élaborés, vous devrez peut-être le faire dans un champ séparé. Mais pour éliminer ce champ d'espace réservé du résultat, vous devrez intégrer toute la requête dans une sous-sélection et définir les champs souhaités dans le bon ordre sur la requête de niveau supérieur.