IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[MsSql-2005] Fusionner le résultat de deux requêtes


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [MsSql-2005] Fusionner le résultat de deux requêtes
    Bonjour,

    Je voudrais pouvoir rassembler le résultat des deux requêtes suivantes :

    1ere requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<>
    -- Create date: <25/03/2009>
    -- Description:	<fonction de test pour selectionner les bons valider par la peinture
    -- uniquement les bons de type=5:abimé production>
    -- =============================================
    ALTER PROCEDURE [dbo].[test_select_infos_bon_a_valider_peinture_production]
    	-- Add the parameters for the stored procedure here
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
    	SELECT DBP.id_bon_peinture,
    		   nom_bon_peinture,
    		   id_type_bon,
    		   id_etape 
     
    	FROM DEV_BON_PEINTURE AS DBP
    	INNER JOIN DEV_TRANSPORT AS DT
    	ON DBP.id_bon_peinture=DT.id_bon_peinture	
     
    	WHERE id_type_bon=5
    	AND id_etape IN (5,11)
    	AND en_cour_transport=1
    END
    2eme requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<>
    -- Create date: <25/03/2008>
    -- Description:	<fonction de test pour selectionner les bons valider par la peinture
    -- sans les bons de type=5:abimé production>
    -- =============================================
    ALTER PROCEDURE [dbo].[test_select_infos_bon_a_valider_peinture]
    	-- Add the parameters for the stored procedure here
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
    	SELECT DBP.id_bon_peinture,
    		   nom_bon_peinture,
    		   id_type_bon,
    		   id_etape 
     
    	FROM DEV_BON_PEINTURE AS DBP
    	INNER JOIN DEV_TRANSPORT AS DT
    	ON DBP.id_bon_peinture=DT.id_bon_peinture
     
    	WHERE id_type_bon IN (1,2,3,4)
    	AND id_etape=8
    	AND en_cour_transport=1
    END
    Mon objectif étant de pouvoir les triers par date décroissante lors de mon affichage.

    Quel est la meilleure méthode pour stocker temporairement le résultat de ses 2 requêtes pour ensuite les renvoyer sur php? Table temporaire ? Vue?

    Ou alors existerai-t-il une méthode pour n'avoir qu'une seule requête à partir de ces deux requêtes. En fait j'ai essayer de le faire en une et une seule requêtes mais je n'arrive pas à traduire et à joindre les éléments des deux closes WHERE.

    merci pour votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    De façon simple, vous pouvez faire avec l'opérateur UNION :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    	SELECT DBP.id_bon_peinture,
    		   nom_bon_peinture,
    		   id_type_bon,
    		   id_etape 
     
    	FROM DEV_BON_PEINTURE AS DBP
    	INNER JOIN DEV_TRANSPORT AS DT
    	ON DBP.id_bon_peinture=DT.id_bon_peinture	
     
    	WHERE id_type_bon=5
    	AND id_etape IN (5,11)
    	AND en_cour_transport=1
    UNION
    	SELECT DBP.id_bon_peinture,
    		   nom_bon_peinture,
    		   id_type_bon,
    		   id_etape 
     
    	FROM DEV_BON_PEINTURE AS DBP
    	INNER JOIN DEV_TRANSPORT AS DT
    	ON DBP.id_bon_peinture=DT.id_bon_peinture
     
    	WHERE id_type_bon IN (1,2,3,4)
    	AND id_etape=8
    	AND en_cour_transport=1
    Quel est la meilleure méthode pour stocker temporairement le résultat de ses 2 requêtes pour ensuite les renvoyer sur php? Table temporaire ? Vue?
    Certainement pas une table temporaire.
    Vous pouvez faire avec une vue mais une vue ne stocke aucune donnée (sauf si elle est indexée )

    @++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour,

    et merci pour ta réponse. Je ne connaissais pas cette opérateur. Faut que je me trouve une liste de tous les opérateurs T-SQL et de leur utilité un peu comme le php.net pour la liste de toute les fonction php screugneugneu.

    Je suis en train de lire la doc de l'opérateur UNION.

    http://msdn.microsoft.com/fr-fr/library/ms180026.aspx

    Encore merci.

    ++

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Attention toutefois à UNION qui doit être vu comme UNION DISTINCT.
    Si vous voulez toutes les lignes des deux ensembles de données même en double, écrivez UNION ALL.
    Il existe aussi EXCEPT qui permet d'effectuer la différence entre deux ensembles de données, et INTERSECT, qui retourne comme son nom l'indique l'intersection de deux ensembles.
    Ces trois opérateurs fonctionnent toujours sur des ensembles de données de structures superposables.

    Si vous voulez la doc, tout est dans ma signature

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [QR3 D7] Imprimer le résultat de deux requêtes
    Par Moine dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/05/2008, 16h26
  2. Importer le résultat de deux requête dans un Excel
    Par alexandrebergercyr dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/05/2007, 18h21
  3. Fusionner le résultat de 3 requêtes
    Par LordClaymore dans le forum Access
    Réponses: 1
    Dernier message: 28/07/2006, 16h48
  4. Afficher le ratio du résultat de deux requêtes
    Par decour dans le forum Access
    Réponses: 25
    Dernier message: 07/11/2005, 19h54
  5. fusionner le résultat de deux requetes
    Par sami_c dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/05/2004, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo