J'ai 2 tables La question est la suivante: Comment répertorier tous les titres de livres ( PS: J'ai essayé Ceci: P> nombk code>) qui ont le prix maximum? P>
TRAFIER code> a les colonnes de prix et une clé étrangère de
livres code> qui est
_numbk code> p>
select max(prix)
from TARIFER tr, books o
where o.numbk = tr._numbk
3 Réponses :
dans SQL Server, vous pouvez utiliser Top (1) avec des liens CODE>:
select top (1) with ties b.nombk, t.prix
from books b join
TARIFER t
on b.numbk = t._numbk
order by t.prix desc;
Merci ! Toute autre manière sans utiliser 'avec des liens. . . ' ?
@ 0x544D. . . Cela semble être l'approche la plus commode.
Les deux requêtes à l'agrégation, mais pas au même niveau:
La première requête a La deuxième requête n'a pas de groupe par clause, il vous donne donc le prix maximum de tous les livres sur tous les tarifs. P> LI>
ul> Si vous voulez le livre avec le prix plus élevé, il n'est pas nécessaire d'agréger: vous pouvez rejoindre et trier les résultats par prix: p> < code> haut (1) avec les liens code> vous donne le premier enregistrement; S'il y a plusieurs enregistrements avec le même prix, la requête les renvoie tous. p> p> groupe par o.nombk code>, de sorte qu'il génère un enregistrement par livre et vous donne le prix maximum de ce livre Accross tous les tarifers. P> li>
AGRÉABLE !! Mais je ne suis pas autorisé à utiliser avec .. Toute solution?
@ 0x544D: Qu'est-ce que vous n'êtes pas autorisé à utiliser?
Le avec code> dans
avec les cravates code> est une syntaxe spéciale. Il ne concerne pas le mot-clé
avec code>, utilisé pour créer des expressions de table communes i>. Tu peux l'utiliser.
Je voulais dire avec des liens, ils s'attendent à ce que je trouve 2 solutions pour ce problème, je suis à peu près sûr qu'ils entendent par 2 solutions: top - max ..
Pourquoi voudriez-vous 2 solutions? Vous pouvez (afaik) utiliser extraire code> avec SQL Server ... - Est-ce une sorte de question de devoirs?
Pourquoi ne pas utiliser juste une sous-requête, obtenez-vous le max (Prix), puis utilisez-le pour répertorier tous les enregistrements avec ce Prix:
select o.nombk ,prix from TARIFER tr , books o where o.numbk = tr._numbk and tr.prix in (select max(prix) from TARIFER tr)
Merci j'ai littéralement oublié d'anciens cours de sous-requêtes LOL. Ça va faire, merci.
Mauvaises habitudes à frapper: Utiliser Old- Style jointures - que la liste des tables de style de style a été remplacée par le style i> ANSI i> ANSI i> ANSI I> Joindre code> Syntaxe dans l'ANSI - 92 B> SQL Standard ( Plus de 25 ans B> Il y a) et son utilisation est découragée