J'ai deux tables avec une relation 1: n: "content" et "versioned-content-data" (par exemple, une entité article et toutes les versions créées de cet article) . Je voudrais créer une vue qui affiche la version supérieure de chaque "contenu".Comment convertir une sous-requête SQL en une jointure
Actuellement, j'utiliser cette requête (avec un sous-requête simple requise):
SELECT t1.id, t1.title, t1.contenttext, t1.fk_idothertable t1.version FROM mytable as t1 WHERE (version = (SELECT MAX(version) AS topversion FROM mytable WHERE (fk_idothertable = t1.fk_idothertable)))
La sous-requête est en fait une requête à la même table qui extrait la version la plus d'un élément spécifique. Notez que les éléments versionnés auront le même fk_idothertable.
Dans SQL Server j'ai essayé de créer une vue indexée de cette requête, mais il semble que je ne suis pas en mesure depuis les sous-requêtes ne sont pas autorisés à vues indexées. Alors ... voici ma question ... Pouvez-vous imaginer un moyen de convertir cette requête en une sorte de requête avec JOINs?
Il semble que les vues indexées ne peuvent pas contenir:
- sous-requêtes
- expressions de table commune
- tables dérivées
- de HAVING
Je suis désespéré. Toutes les autres idées sont les bienvenues :-)
Merci beaucoup!
est votre sous-requête correcte? Je vois seulement une table référencée –
Oui, est une sous-requête à la même table qui extrait la version max d'un élément qui partage le même fk_idothertable – sachaa
btw ... fk_idothertable est la clé étrangère à la table principale – sachaa