Tengo dos tablas con una relación 1: n: "contenido" y "contenido-contenido-versionado" (por ejemplo, una entidad de artículo y todas las versiones creadas de ese artículo) . Me gustaría crear una vista que muestre la versión superior de cada "contenido".Cómo convertir una subconsulta SQL a una combinación
Actualmente uso de esta consulta (con un simple subconsulta):
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)))
El sub consulta es en realidad una consulta a la misma mesa que extrae la versión más alta de un elemento específico. Tenga en cuenta que los elementos versionados tendrán el mismo fk_idothertable.
En SQL Server que trataron de crear una vista indizada de esta consulta, pero parece que no soy capaz de subconsultas ya no están permitidos en vistas indizadas. Entonces ... esta es mi pregunta ... ¿Puedes pensar en una forma de convertir esta consulta en algún tipo de consulta con JOINs?
Parece que las vistas indizadas no pueden contener:
- subconsultas
- expresiones de tabla común
- tablas derivadas
- HAVING
estoy desesperado. Cualquier otra idea es bienvenida :-)
¡Muchas gracias!
es su subconsulta correcta? Solo veo una tabla referenciada –
Sí, es una subconsulta a la misma tabla que extrae la versión máxima de un artículo que comparte el mismo fk_idothertable – sachaa
btw ... fk_idothertable es la clave externa de la tabla maestra – sachaa