J'utilise SQL Server 2008 et j'ai 3 tables, x
, y
et z
. y
existe pour créer une relation many-to-many entre x
et z
. Toutes les zones ci-dessus sont int
.Valeur maximale dans une relation plusieurs-à-plusieurs
Je veux trouver la méthode la plus performante (à l'exception dénormaliser) de trouver le z
avec le plus haut sort
pour tout x
et retourner tous les champs de trois tables.
données Exemple:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
Le jeu de résultats doit être
xid zid
--- ---
1 3
2 2
Notez que si plus d'un z
existe avec la même valeur la plus élevée sort
, alors je veux toujours une seule ligne par x
.
Notez également que dans ma situation réelle, il y a d'autres champs dans les trois tables dont j'ai besoin dans mon jeu de résultats.
Je suppose que vous êtes après que la solution de la situation réelle du monde? Je vous suggère de mettre à jour votre question avec quelques champs supplémentaires pour chaque table, et de définir ce que vous souhaitez que votre ensemble de résultats à rechercher. – MPritchard
Juste pour ajouter à cette question. La conception de votre base de données est-elle corrigée ou en cours de mise en œuvre? Je trouve étrange que votre "sort" soit dans la table z et non dans la table y. Je trouve habituellement qu'une relation de plusieurs à plusieurs comme celle-ci a souvent le genre pour lequel "z" vous pourriez être intéressé par la table "y". Ignorez-moi si je me trompe, il est impossible de savoir sans contexte. –
Il est toujours en cours d'implémentation et je suis d'accord avec ce que vous dites, mais dans le contexte de ce qui est en cours de construction, le tri est et devrait être sur la table 'z'. – enashnash