Estoy usando SQL Server 2008 y tengo 3 tablas, x
, y
y z
. y
existe para crear una relación de varios a varios entre x
y z
.Valor máximo en una relación muchos a muchos
x y z
-- -- --
id xid id
zid sort
Todos los campos anteriores son int
.
Quiero encontrar el método de mejor rendimiento (excluyendo desnormalizar) de encontrar el z
con la más alta para cualquier sort
x
, y devolver todos los campos de las tres tablas.
datos de la muestra:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
conjunto de resultados debe ser
xid zid
--- ---
1 3
2 2
Tenga en cuenta que si más de un z
existe con el mismo valor más alto sort
, entonces yo todavía sólo quiero una fila por x
.
Tenga en cuenta también que en mi situación del mundo real, hay otros campos en las tres tablas que necesitaré en mi conjunto de resultados.
supongo que usted está después de la solución de la situación del mundo real? Le sugiero que actualice su pregunta con un par de campos adicionales para cada tabla, y defina lo que le gustaría que buscara su conjunto de resultados. – MPritchard
Solo para agregar a esta pregunta. ¿Su diseño de base de datos está reparado o todavía se está implementando? Me parece extraño que tu "clasificación" esté en la tabla z y no en la tabla y. Por lo general, encuentro que una relación de muchos a muchos como este a menudo tiene el tipo de "z" que podría interesarle en la tabla "y". Ignorarme si estoy equivocado, es imposible saberlo sin contexto. –
Todavía se está implementando y estoy de acuerdo con lo que dices, pero en el contexto de lo que se está creando, el género está y debe estar en la tabla 'z'. – enashnash