SQL: Union Operator (Français)
exemple – noms de champs différents
Il n’est pas nécessaire que les colonnes correspondantes dans chaque instruction SELECT aient le même nom, mais elles doivent être les mêmes types de données correspondants.
lorsque vous n’avez pas les mêmes noms de colonne entre les instructions SELECT, cela devient un peu délicat, en particulier lorsque vous souhaitez ordonner les résultats de la requête à l’aide de la clause ORDER BY.
voyons comment utiliser l’opérateur UNION avec différents noms de colonnes et ordonner les résultats de la requête.,
Par exemple:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
dans cet exemple D’Union SQL, les noms de colonnes étant différents entre les deux instructions SELECT, il est plus avantageux de référencer les colonnes de la clause ORDER BY par leur position dans le jeu de résultats. Dans cet exemple, nous avons trié les résultats par supplier_id / company_id dans l’ordre croissant, comme indiqué par le ORDER BY 1
. Les champs supplier_id / company_id sont en position # 1 dans le jeu de résultats.
maintenant, explorons cet exemple plus loin avec des données.,p>
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
Vous obtiendrez les résultats suivants:
supplier_id | supplier_name |
---|
tout d’abord, notez que l’enregistrement avec supplier_id de 3000 n’apparaît qu’une seule fois dans le jeu de résultats car la requête Union a supprimé les entrées en double.,
deuxièmement, notez que les en-têtes de colonne dans le jeu de résultats sont appelés supplier_id et supplier_name. En effet, il s’agissait des noms de colonne utilisés dans la première instruction SELECT de L’UNION.
Si vous aviez voulu, vous auriez pu alias de colonnes comme suit:
SELECT supplier_id AS ID_Value, supplier_name AS Name_ValueFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id AS ID_Value, company_name AS Name_ValueFROM companiesWHERE company_id > 1000ORDER BY 1;
Maintenant, les en-têtes de colonne dans le résultat sera alias ID_Value pour la première colonne et Valeur_nom pour la deuxième colonne.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |