J'ai un tableau pour chaque type de lieu (ville, rue, pays, etc.).Aide avec UPDATE avec INNER JOIN personnalisé - T-SQL
Maintenant, j'ai une procédure stockée qui doit retourner une liste de "Emplacements", avec leur "revue la mieux notée".
J'ai une table temporaire pour tenir sur les "Emplacements" (pourrait être n'importe quoi - Rue, Ville, etc).
-je insérer dans la table temporaire d'abord des villes, puis les rues, puis les pays, etc.
je me retrouve avec une table temporaire de « Emplacements », et pour chacun de ceux que je besoin de saisir le plus haut Évaluation évaluée. (Le plus élevé = BaseScore, par exemple 5,0)
Cardinalités:
- Lieu Many..Many Messages (PostLocations se joindre à la table)
- Poster 1..1 examen
- examen 1..1 Score
Lieu Temp Tableau:
DECLARE @ResultSet TABLE
(
[LocationId] INT,
[TopReviewId] INT, -- starts out NULL, need to fill in
[TopReviewContent] NVARCHAR(MAX) -- starts out NULL, need to fill in
)
-- Get the Top Rated Review for each location.
UPDATE ResultSet
SET TopReviewId = TopReview.PostId,
TopReviewContent = TopReview.Content
FROM @ResultSet ResultSet
INNER JOIN
(
SELECT TOP 1 pl.LocationId, p.postid, p.Content
FROM PostLocations pl
INNER JOIN Posts p
ON pl.PostId = p.PostId
INNER JOIN Reviews r
ON p.PostId = r.PostId
INNER JOIN Scores s
ON r.ScoreId = s.ScoreId
INNER JOIN @ResultSet rs
ON pl.LocationId = rs.LocationId
ORDER BY s.BaseScore DESC
) AS TopReview
ON ResultSet.LocationId = TopReview.LocationId
INNER JOIN PostLocations pl
ON ResultSet.LocationId = pl.LocationId
INNER JOIN Posts p
ON pl.PostId = p.PostId
INNER JOIN Reviews r
ON pl.PostId = r.PostId
-- Now return the Results:
SELECT TOP 10
[LocationId],
[TopReviewId],
[TopReviewContent]
FROM @ResultSet
Ceci est la sortie je reçois actuellement
LocationId TopReviewId TopReviewContent
1 12313 Blah Blah
2 NULL NULL
3 NULL NULL
Ceci est la sortie je veux
LocationId TopReviewId TopReviewContent
1 12313 Blah Blah
2 44323 Meh meh
3 5345345 Pew pew
Est-il nécessaire que votre tâche soit insérée dans une table temporaire? Je pense que vous pouvez trouver le prix maximum par client sans table temporaire. – Ramy
L'instruction UPDATE est source de distraction - quelle est votre sortie attendue? –
Peut-être que je ne devrais pas utiliser des tables/scénarios inventés. Je vais mettre à jour le Q. – RPM1984