Ho due tabelle con una relazione 1: n: "contenuto" e "versione-contenuto-dati" (ad esempio, un'entità articolo e tutte le versioni create di tale articolo) . Vorrei creare una vista che mostri la versione principale di ogni "contenuto".Come convertire una sottoquery SQL in un join
Attualmente io uso questa query (con una semplice sottoquery):
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 sottoquery è in realtà una query per la stessa tabella che estrae la versione più alto di un elemento specifico. Si noti che gli articoli con versione avranno lo stesso fk_idothertable.
In SQL Server Ho cercato di creare un indicizzato vista di questa query, ma sembra che io non sono in grado in quanto sottoquery non sono ammessi nella viste indicizzate. Quindi ... ecco la mia domanda ... Riesci a pensare a un modo per convertire questa query in una sorta di query con JOINs?
Sembra viste indicizzate non possono contenere:
- subqueries
- espressioni di tabella comuni
- tabelle derivate
- clausole con
Sono disperata. Altre idee sono benvenute :-)
Grazie mille!
è la subquery corretta? Vedo solo una tabella referenziata –
Sì, è una sottoquery della stessa tabella che estrae la versione massima di un elemento che condivide la stessa fk_idothertable – sachaa
btw ... fk_idothertable è la chiave esterna della tabella master – sachaa