Ich benutze SQL Server 2008 und ich habe 3 Tabellen, x
, y
und z
. y
existiert, um eine Viele-zu-Viele-Beziehung zwischen x
und z
zu erstellen.Max-Wert in einer Viele-zu-Viele-Beziehung
x y z
-- -- --
id xid id
zid sort
Alle oben genannten Felder sind int
.
Ich möchte die beste Ergebnis erzielt Methode zu finden (ohne Entnormierung) die z
mit den höchsten sort
für jeden x
finden, und kehren Sie alle Felder aus allen drei Tabellen.
Beispieldaten:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
Ergebnis Satz sollten
xid zid
--- ---
1 3
2 2
Hinweis sein, dass, wenn mehr als ein z
mit dem gleichen höchsten sort
Wert vorhanden ist, dann will ich nur noch eine Zeile pro x
.
Beachten Sie auch, dass es in meiner realen Situation andere Felder in allen drei Tabellen gibt, die ich in meinem Ergebnissatz brauche.
Ich nehme an, Sie sind nach der Lösung der realen Welt Situation? Ich schlage vor, dass Sie Ihre Frage mit ein paar zusätzlichen Feldern für jede Tabelle aktualisieren und definieren, wonach Ihr Ergebnissatz suchen soll. – MPritchard
Nur um diese Frage hinzuzufügen. Ist Ihr Datenbankdesign festgelegt oder wird es noch implementiert? Ich finde es seltsam, dass Ihre "Sortierung" in der Z-Tabelle und nicht in der Y-Tabelle ist. Ich finde normalerweise, dass eine Beziehung von vielen zu vielen oft die Sorte hat, für die "z" Sie an der "y" -Tabelle interessiert sein könnten. Ignoriere mich, wenn ich mich irre, es ist unmöglich ohne Kontext zu wissen. –
Es wird immer noch implementiert und ich stimme dem zu, was Sie sagen, aber im Zusammenhang mit dem, was gebaut wird, ist und sollte die Art auf der 'z' Tabelle sein. – enashnash