J'ai une base de données pour une petite application de calendrier dans laquelle les personnes sont stockées dans la table des clients, les dates sont stockées dans la table calendrate et, étant donné que les relations sont nombreuses à beaucoup, il existe une table de liaison appelée client_date qui contient ses deux identifiants. .
Je veux faire une sélection imbriquée pour que toutes les dates d'une personne particulière permettent de dire avec ID = 2.
Je suis venu avec ça, mais elle imprime toutes les dates et les affiche à la personne avec cet identifiant, au lieu d'imprimer simplement les seuls qu'il est asigné à: p> Y a-t-il quelque chose que je fais mal ou existe-t-il une autre façon de faire une déclaration de sélection imbriquée? P> Ma base de données et mes données: p> la sortie que je reçois Pour le client particulier: p>
3 Réponses :
Pourquoi pas simplement utiliser rejoindre code> S?
Oui, cela fonctionne effectivement et je l'ai déjà fait en utilisant deux jointures, mais je voulais le faire avec une seule et nichée choisit parce que mon professeur m'a dit qu'ils seraient plus rapides et les connaissant serait bénéfique.
@Malazzar. . . Le savoir n'est pas bénéfique. Cependant, il est douteux que les sous-coutumes soient plus rapides.
Votre erreur est ici: chaque identifiant client em> existe dans la table des clients. Vous le souhaitez à la place: P> on (c.id, d.id) in (select clientid, dateid from client_date)
Je veux faire une sélection imbriquée pour obtenir toutes les dates d'un particulier Personne laisse dire avec id = 2 p>
Ceci peut être fait avec: p>
xxx pré> une requête de jointure équivalente serait: p>
xxx pré>
Vue sur DB Fiddle P> Remarque: les deux requêtes ne sont que équivalentes, S'il n'y a pas de duplicates dans la table
client_date code>. p>
Si vous souhaitez sélectionner des données à partir de plusieurs table, vous avez actuellement besoin fort> à utiliser un REJOINDRE. Dans ce cas, demandant comment le faire sans jointures, ne serait pas de sens. P> blockquote>
Je ne vois aucun besoin de déclarations imbriquées ici. Les jointures feront le travail parfaitement bien. Notez qu'un résultat souhaité est toujours utile.
Oui, je sais que je l'ai déjà fait avec une double jointure, mais on m'a dit que c'était mieux et plus rapide d'utiliser des déclarations de sélection imbriquées. De plus, je veux comprendre comment ils fonctionnent mieux.
Vous avez été mal informé.
Et si au lieu d'utiliser ce
où clientId dans (Sélectionnez ID de clients) CODE> ESSAYEZ CE
Où ClientID = C.ID CODE>. Faites-moi savoir si cela aide.