J'ai fait la conception de base de données pour un petit système de CRM. Il comprend des sociétés et des réunions (entre autres).Problème avec mon SQL joindre/groupe par/curseur question
Companies a les champs: ID (primaire, auto_inc) Nom (texte)
Réunions a les champs: ID (primaire, auto_inc) COMPANYID (lien vers Companies.ID) WhenTime (datetime , pour stocker lorsque la réunion a été) notes (texte au sujet de la réunion)
ce que je veux accomplir est une requête qui me donne une liste de toutes les entreprises (tous les champs de la table) et les WhenTime et les notes de la dernière réunion avec cette société (le plus récent est max (WhenTime), et s'il n'y en a pas, NULL va bien).
Je pense que je peux résoudre cela avec des curseurs, mais j'ai peur de la vitesse.
J'ai essayé plusieurs formulations Group By, mais je crains de manquer de finesse.
Ma dernière tentative était la suivante:
select Companies.ID, Companies.name, mts.whentime, mts.notes
from Companies
left outer join (
select top(1) *
from Meetings
order by [whentime] desc
) mts
on Companies.ID = mts.companyID
order by Companies.name asc
mais ce code ne prend un tuple de réunions, et non une par entreprise dans la jointure, donc il est pas bon.
Des idées?
Avez-vous besoin d'énumérer toutes les entreprises, ou seulement celles qui ont eu au moins une réunion? –
toutes les entreprises, avec le temps de réunion le plus récent et d'autres choses si disponible – Tominator