J'utilise t-sql. J'ai ce que je pensais être une recherche facile. Il existe une relation 1-à-plusieurs entre SalesPerson et TradeShow. 1 vendeur aurait pu aller à de nombreux salons. Je dois être capable de chercher sur le SalePerson. Je dois également être en mesure de faire une recherche sur le dernier salon auquel ils ont assisté. Je pensais que je serais en mesure de faire de simples rencontres et groupes sur leur dernier salon, mais je ne peux pas afficher la ville ou l'État.Comment effectuer une recherche sur une relation 1-à-plusieurs lorsque les critères peuvent figurer sur l'une ou l'autre des tables?
SELECT SalePersonID, FirstName, LastName, TradeShow.DateLastWent
FROM SalesPerson INNER JOIN
(SELECT SalePersonID, MAX(DateLastWent) AS DateLastWent
FROM TradeShow
GROUP BY SalesPersonID) AS TradeShow ON SalesPerson.SalePersonID= TradeShow.SalePersonID
Ce travail, mais le salon a aussi la ville et l'État. Je dois pouvoir rechercher et afficher la ville et l'état. Mais si je les inclue dans la sous-requête, je dois les inclure dans une fonction agrégée, et si je fais cela, j'obtiens la ville et l'état incorrects.
Les tables sont simples
SALEPERSON SalesPersonID PK prenom lastname
TRADESHOW tradeshowID PK datelastwent ville état SalesPersonID FK
Cela nécessitera également une analyse de table supplémentaire sur l'utilisation de quelque chose avec ROW_NUMBER() OVER (ORDER BY ~). Alors peut-être en mesure d'optimiser? –
Notez que vous allez avoir des problèmes avec cela s'ils vont à deux spectacles dans une journée. – Stu
Je ne pense pas que ce soit une analyse de table du tout (il y a un FK sur SalePersonId, et j'espère qu'il y a un index sur ce champ aussi - au moins il est recommandé de créer un index sur les colonnes FK), dans le pire des cas, il s'agira d'index scan + lookup. – a1ex07