Je mets la jointure interne dans ma requête.J'ai le résultat, mais je ne savais pas comment les données arriveraient en sortie.Peut-on me dire que la jointure interne correspond aux données.Blow, je montre une image.Il existe deux tables (une ou deux tables).
Selon moi, cette première rangée devrait être Mohit mais la sortie est différente.Veuillez me le dire.
Merci d'avance.
Vous devez trier si vous voulez que les données reviennent d'une certaine manière. Lorsque vous dites que vous vous attendez à ce que "Mohit
" soit la première ligne, je suppose que vous dites cela car "Mohit
" est la première ligne de la table [One]
. Toutefois, lorsque SQL Server joint des tables, il ne le fait pas nécessairement dans l'ordre que vous pensez.
Si vous souhaitez que la première ligne de [One]
soit renvoyée, essayez de trier par [One].[ID]
. Alternativement, vous pouvez order by
n'importe quelle autre colonne.
Dans SQL
, l'ordre de la sortie n'est défini que si vous le spécifiez dans la clause ORDER BY
.
Essaye ça:
SELECT *
FROM one
JOIN two
ON one.one_name = two.one_name
ORDER BY
one.id
Évitez SELECT *
dans votre requête principale.
Évitez les colonnes en double: la condition JOIN
garantit que One.One_Name
et two.One_Name
seront égaux; vous n'avez donc pas besoin de les renvoyer dans la clause SELECT
.
Évitez les noms de colonnes en double: renommez One.ID
et Two.ID
en utilisant des «alias».
Ajoutez une clause ORDER BY
en utilisant les noms de colonne ('alises' le cas échéant) de la clause SELECT
.
Suggestion de réécriture:
SELECT T1.ID AS One_ID, T1.One_Name,
T2.ID AS Two_ID, T2.Two_name
FROM One AS T1
INNER JOIN two AS T2
ON T1.One_Name = T2.One_Name
ORDER
BY One_ID;
Ajoutez un ORDER BY ONE.ID ASC
à la fin de votre première requête.
Par défaut, il n'y a pas de commande.
SQL ne renvoie aucun ordre par défaut car il est plus rapide de cette façon. Il n'est pas nécessaire que vos données soient d'abord analysées, puis que vous décidiez quoi faire.
Vous devez ajouter une clause order by, et probablement un ordre correspondant à l'ID que vous attendez. (Il y a une copie de noms, donc je suppose que vous voulez One.ID)
select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
J'ai trouvé cela problématique lors de l'adhésion, mais vous trouverez peut-être utile de consulter ce blog pour comprendre le fonctionnement des jointures à l'arrière . Comment les jointures fonctionnent-elles ...
[Modifié] @ Shree Merci de l'avoir signalé . Sur le paragraphe de Fusion de jointures. Il mentionne comment les jointures fonctionnent ...
Comme jointure de hachage, la jointure de fusion se compose de deux étapes. Tout d’abord, les deux tables du join sont triés sur l'attribut join. Cela peut être fait avec seulement deux passe à travers chaque table via un tri de fusion externe. Finalement, le les n-uplets de résultat sont générés au fur et à mesure que l'élément ordonné suivant est extrait chaque table et les attributs de jointure sont comparés
.