Comment Subquery dans l'instruction select fonctionne-t-il dans oracle
J'ai regardé partout pour une explication de comment fonctionne la sous-requête dans une instruction select travail et encore je ne peut pas saisir le concept, parce que de très vagues explications.
Je voudrais savoir comment utiliser une sous-requête dans une instruction select dans oracle et qu'est ce qu'il sortie.
Par exemple, si j'avais une requête qui voulait afficher les noms des employés et le nombre de profils qu'ils gèrent à partir de ces tables
Employé(EmpName, EmpId)
Profil(ProfileId, ..., EmpId)
comment puis-je utiliser la sous-requête?
Je pensais à une sous-requête est nécessaire dans l'instruction select pour mettre en œuvre le groupe par fonction pour compter le nombre de profils gérés pour chaque employé, mais je ne suis pas trop sûr.
source d'informationauteur user3054901
Vous devez vous connecter pour publier un commentaire.
C'est simple-
C'est encore plus simple lorsque vous utilisez une jointure de table comme ceci:
Explication de la sous-requête:
Essentiellement, une sous-requête dans un
select
obtient une valeur scalaire et le transmet à la requête principale. Une sous-requête dansselect
n'est pas autorisé à passer plus d'une ligne et plus d'une colonne, ce qui est une restriction. Ici, nous passons uncount
à la requête principale, qui, comme nous le savons, va toujours être seulement un nombre, une valeur scalaire. Si une valeur n'est pas trouvée, la sous-requête renvoienull
à la requête principale. En outre, une sous-requête peut accéder à des colonnes de lafrom
de la clause de la requête principale, comme indiqué dans ma requête oùemployee.empid
est passé de la requête externe à l'intérieur de la requête.Modifier:
Lorsque vous utilisez une sous-requête dans un
select
clause, Oracle essentiellement le traite comme un left join (vous pouvez les voir dans la expliquer le plan pour votre requête), avec la cardinalité de l'lignes étant juste sur le droit pour chaque ligne de la gauche.Explication pour le left join
Une jointure gauche est très pratique, surtout lorsque vous souhaitez remplacer le
select
sous-requête en raison de ses restrictions. Il n'y a pas de restrictions, ici, sur le nombre de lignes des tables de chaque côté de laLEFT JOIN
mot-clé.Pour plus d'informations lire Oracle Docs sur les sous-requêtes et left join ou jointure externe gauche.
Dans le SGBDR Oracle, il est possible d'utiliser un multi-rangée sous-requête dans la clause select, tant que les (sous-)de sortie est encapsulé sous forme d'une collection. En particulier, un multi-ligne clause select sous-requête peut de sortie de chacune de ses lignes comme un xmlelement qui est encapsulé dans un xmlforest.