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 :

SELECT ligne multibase [2008]


Sujet :

Développement SQL Server

  1. #1
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut SELECT ligne multibase
    Bonjour,
    Sous MSSQL 2008, j’ai une base de production nommée DB2013,
    avec une table T1 disposant d’un champ texte unique F1.

    Je dispose de bases archives, nommées DB2012, DB2011 etc.
    qui ont la même structure que la DB2013, donc avec la même table T1 et le même champ F1.
    L’unicité sur F1 est maintenue sur toutes les bases,
    c'est-à-dire que dans toutes les tables T1,
    je n’aurai qu’une seule ligne F1 = ‘ABC123456’ par exemple.

    Je cherche à poser une requête SELECT me permettant d’extraire sur
    l’ensemble des bases la ligne de T1 où F1 = ‘ABC123456’.

    J’ai tenté avec une requête multibase, mais je n’arrive pas à récupérer qu’une seule ligne !

    J’ai bien sur la possibilité de poser 3 fois la requête, si j’ai 3 bases, mais je préférerai ne la poser qu’une seule fois, si c’est possible.

    Voilà où j’en suis et je patauge…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  B1.F1, B2.F1, B3.F1  
    FROM [DB2013].[dbo].[T1] as B1
    ,[DB2012].[dbo].[T1] as B2
    ,[DB2011].[dbo].[T1] as B3
      where
      B1.F1 = ‘ABC123456’ OR B2.F1 = ‘ABC123456’ OR B3.F1 = ‘ABC123456’
    Merci pour votre aide,
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    Quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT 
        (SELECT F1 FROM [DB2013].[dbo].[T1] WHERE F1 = ‘ABC123456’) AS B1
    ,   (SELECT F1 FROM [DB2012].[dbo].[T1] WHERE F1 = ‘ABC123456’) AS B2
    ,   (SELECT F1 FROM [DB2011].[dbo].[T1] WHERE F1 = ‘ABC123456’) AS B3

  3. #3
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Oui, ça correspond presque, mais je peux m'en tirer en deux SQL.
    Car bien sur, je ne récupère pas une ligne pour rien, le but étant de récupérer aussi les autres champs de la ligne.
    De cette manière, je récupère le nom de la base DBxxxx qui contient ma
    ligne.
    Je n'ai plus qu'a poser une seconde requête, sur la bonne DB, me renvoyant la totale de la ligne.

    A moins que tu es une autre idée, car passer tous les champs sous cette forme, ne me parait rentable en terme de temps d'éxécution.

    Question subsidiaire, j'imagine que dans cet exemple, les trois requêtes sont posées, même si le résultat est dans la première base.

    J'ai essayé SELECT TOP 1 (SELECT...
    mais ça exécute toujours les trois requêtes, (ce qui me parait normal vu la construction), y aurait il un moyen pour ?
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    alors faites un UNION ALL

  5. #5
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    alors faites un UNION ALL
    Merci de vous pencher sur mon problème et de répondre si rapidement,
    mais un petit plus d'explication me serait nécessaire pour mon niveau.

    Je ne sais m'en tenir qu'aux requetes basiques et là je ne vois pas ce que vous m'encouragez à faire, sans me réécrire la requete complète.

    Merci encore,
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT Colonne1, colonne2,Colonne3
    FROM [DB2013].[dbo].[T1] WHERE F1 = ‘ABC123456’
    UNION ALL
    SELECT Colonne1, colonne2,Colonne3
    FROM [DB2012].[dbo].[T1] WHERE F1 = ‘ABC123456’
    UNION ALL 
    SELECT Colonne1, colonne2,Colonne3
    FROM [DB2011].[dbo].[T1] WHERE F1 = ‘ABC123456’

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par castorcharly Voir le message
    Question subsidiaire, j'imagine que dans cet exemple, les trois requêtes sont posées, même si le résultat est dans la première base.

    J'ai essayé SELECT TOP 1 (SELECT...
    mais ça exécute toujours les trois requêtes, (ce qui me parait normal vu la construction), y aurait il un moyen pour ?
    Vous pouvez faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT TOP(1) Colonne1, colonne2,Colonne3
    FROM (
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2013].[dbo].[T1] WHERE F1 = ‘ABC123456’
      UNION ALL
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2012].[dbo].[T1] WHERE F1 = ‘ABC123456’
      UNION ALL 
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2011].[dbo].[T1] WHERE F1 = ‘ABC123456’
    ) T
    Ainsi, le moteur pourra ne pas lire certaines tables

  8. #8
    Membre actif
    Avatar de castorcharly
    Homme Profil pro
    Chef de projet
    Inscrit en
    Février 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2009
    Messages : 416
    Points : 299
    Points
    299
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Vous pouvez faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT TOP(1) Colonne1, colonne2,Colonne3
    FROM (
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2013].[dbo].[T1] WHERE F1 = ‘ABC123456’
      UNION ALL
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2012].[dbo].[T1] WHERE F1 = ‘ABC123456’
      UNION ALL 
      SELECT Colonne1, colonne2,Colonne3
      FROM [DB2011].[dbo].[T1] WHERE F1 = ‘ABC123456’
    ) T
    Ainsi, le moteur pourra ne pas lire certaines tables
    Merci, super aide, là je n'ai plus rien à faire, mais j'ai appris.
    Je note comme résolu.
    “La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.” Antoine de Saint-Exupéry.

    D1..D7-2005,2006-Xe2 Ent-XE7 archi-MsSql 2005..2008 & R2, FB 1.5..2.5.x.x -Win10,Win7/64-Xp-
    _____________________________________________________

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

Discussions similaires

  1. Jtable selection ligne par defaut
    Par debutJava dans le forum Composants
    Réponses: 2
    Dernier message: 06/06/2006, 10h18
  2. [Swing][Jtable] selection ligne
    Par cerede2000 dans le forum Composants
    Réponses: 4
    Dernier message: 21/04/2006, 09h49
  3. flexgrid:selection cellule=selection ligne
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/10/2005, 21h27
  4. [MFC] selection ligne CListCtrl
    Par abignon dans le forum MFC
    Réponses: 3
    Dernier message: 25/06/2004, 12h56
  5. [ECLIPSE 2.1][CHERCHE PLUGIN] selection ligne entiere
    Par jcarre dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/12/2003, 16h54

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