Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1569 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL server] Faire un max sur une union

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL server] Faire un max sur une union

n°1037054
Lenoiche
Posté le 06-04-2005 à 11:58:03  profilanswer
 

Voila j'ai un problème de conception
je recupere la colonne date d une table
je recupere la colonne date d une autre table
je fais l union des 2
ce qui me renvoie une seul colonne date
sur cette colonne date je prends uniquement la date max
 
donc est il possible de faire ainsi
 
Max ( Select Date from Tableau 1
                  where .....
      Union
      Select Date from Tableau 2
                  where ......
     )
 
merci
 
 
PS : pour l'instant impossible de tester ma requête
 

mood
Publicité
Posté le 06-04-2005 à 11:58:03  profilanswer
 

n°1037164
Lenoiche
Posté le 06-04-2005 à 13:09:24  profilanswer
 

up

n°1037322
Lenoiche
Posté le 06-04-2005 à 14:22:26  profilanswer
 

toujours personne ???

n°1037524
Beegee
Posté le 06-04-2005 à 15:20:08  profilanswer
 

Select Max(Date)
From ( Select Date from Tableau 1  
                  where .....  
      Union  
      Select Date from Tableau 2  
                  where ......  
     );
 
En pratique, en général, les noms de champs sont différents, il faut donc leur donner le même nom pour que ce soit plus lisible (et que ça marche ;) ) :
 
Select Max(Date)
From ( Select Date_Tableau1 AS Date from Tableau 1  
                  where .....  
      Union  
      Select Date_Tableau2 AS Date from Tableau 2  
                  where ......  
     );


Message édité par Beegee le 06-04-2005 à 15:21:22
n°1037544
Lenoiche
Posté le 06-04-2005 à 15:28:12  profilanswer
 

ha merci Beegee, c etait tout bête comme requête.
 
un grand merci :jap:

n°1037685
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-04-2005 à 16:15:59  profilanswer
 

Si c'est juste pour faire un MAX(Date), je te conseille de faire un UNION ALL, car la date n'a pas besoin d'être unique. Un UNION ALL est infiniment plus rapide qu'un UNION simple.

n°1037729
moi23372
Posté le 06-04-2005 à 16:41:59  profilanswer
 

oui mais UNION ALL ne fait pas partie de la norme? est ce que ça marchera sur SQL SERVER?

n°1037735
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-04-2005 à 16:46:26  profilanswer
 

Si, il fait partie de la norme SQL, on le retrouve sur tous les SGBD que je connais :
 
SQL Server, Oracle, Access, DB2.

n°1037737
Arjuna
Aircraft Ident.: F-MBSD
Posté le 06-04-2005 à 16:48:07  profilanswer
 

Doc SQL Server 2000 :
 
Référence de Transact-SQL  
 
 
Opérateur UNION
Associe les résultats de plusieurs requêtes en un seul jeu de résultats constitué de toutes les lignes appartenant aux requêtes de l'union. Cette opération diffère de l'utilisation des jointures combinant les colonnes des deux tables.
 
Voici deux règles essentielles pour combiner les jeux de résultats de deux requêtes avec UNION :  
 
Le nombre et l'ordre des colonnes doivent être identiques dans toutes les requêtes.
 
 
Les types de données doivent être compatibles.  
Syntaxe
    { < query specification > | ( < query expression > ) }  
        UNION [ ALL ]  
        < query specification | ( < query expression > )  
            [ UNION [ ALL ] < query specification | ( < query expression > )  
                [ ...n ] ]  
 
Arguments
< query_specification > | ( < query_expression > )  
 
Spécification ou expression de requête qui renvoie les données à combiner avec les données d'une autre spécification ou expression de requête. Les définitions des colonnes faisant partie d'une opération UNION ne doivent pas forcément être identiques, mais doivent être compatibles à travers une conversion implicite.
 
Le tableau suivant montre les règles de comparaison des types de données et des options des (énièmes) colonnes correspondantes.
 
Type de données de la énième colonne Type de données de la énième colonne de la table de résultats  
Incompatibilité du type de données (aucune prise en charge implicite par Microsoft® SQL Server™ de la conversion des données) Erreur renvoyée par SQL Server  
Type char de longueurs fixes L1 et L2 Colonne de type char dont la longueur est égale à la plus grande des deux (L1 et L2)  
Type binary de longueurs fixes L1 et L2 Colonne de type binary dont la longueur est égale à la plus grande de L1 et L2  
L'une des colonnes ou les deux sont de type char et de longueur variable. Colonne de type char de longueur variable égale au maximum des longueurs spécifiées pour les énièmes colonnes  
L'une des colonnes ou les deux sont de type binary et de longueur variable. Colonne de type binary de longueur variable égale au maximum des longueurs spécifiées pour les énièmes colonnes  
Type numérique (par exemple, smallint, int, float, money). Type de données de la colonne offrant la plus grande précision des deux colonnes. Par exemple, si la énième colonne de la table A est de type int (entier) et la énième colonne de la table B est du type float, le type de données de la énième colonne de la table de résultats sera float, qui est plus précis que int.  
Les descriptions des deux colonnes contiennent la valeur NOT NULL. Spécifie la valeur NOT NULL (valeurs NULL non autorisées)  
 
 
UNION
 
Indique que les jeux de résultats multiples doivent être associés et renvoyés dans un seul jeu de résultats.
 
ALL
 
Incorpore toutes les lignes dans les résultats, y compris les doublons. Si ALL n'est pas spécifié, tous les doublons de lignes sont supprimés.
 
©1988-2000 Microsoft Corporation. Tous droits réservés.

n°1037757
Lenoiche
Posté le 06-04-2005 à 16:59:42  profilanswer
 

merci les gens pour vos conseil
en effet j'vais utiliser union all historie de rendre ça plus rapide :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL server] Faire un max sur une union

 

Sujets relatifs
[Résolu] Problème ASP/SQL: erreur dans la requêteHTTP server - PrintWriter BufferedReader
Server Error[SQL] Petit "cours" sur l'optimisation
[Resolu] Probleme Sql mais comment ?[SQL] recuperer que les chiffres d'un champ
SQL / Informix : Error 297[SQL]Insérer une ligne automatiquement dans une autre table
Comparer date SQL/Date du jourRéaliser une union avec SQL SERVER 2000
Plus de sujets relatifs à : [SQL server] Faire un max sur une union


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR