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

MS SQL Server Discussion :

[UNION] - Perte de résultat sur une requête avec UNION


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut [UNION] - Perte de résultat sur une requête avec UNION
    Bonjour,

    Je viens vers vous car j'ai un problème sur une requête utilisant plusieurs UNION!

    - Je travail sous SQL SERVER 2008 -

    Explication:
    J'ai 4 requêtes A, B, C, D
    A retourne 10 lignes
    B retourne 5 lignes
    C retourne 50 lignes
    D retourne 20 lignes

    Lorsque J'essaye de combiner ces requêtes via un UNION:
    A UNION B UNION C UNION D

    Le résultat que j'obtiens est erroné car le nombre de lignes ne correspond pas au cumul des lignes de chacune de mes requêtes, en gros j'obtiens 50 lignes!!

    En regardant de plus près j'ai remarqué la chose suivante:
    Si j'inverse l'ordre des requêtes dans mon UNION (B UNION D UNION C UNION A) le nombre de ligne retourné est le même mais les données non. J'ai l'impression que seule les premières requêtes sont interprétées !

    Il faut savoir que le nombre de caractère de la requête avec les UNION est de 17000 environ.

    Y-a-t-il un problème de dépassement de capacité ? si oui pourquoi je n'ai pas de warning ou d'erreur dans SQl server?

    Pouvez vous m'aider s'il vous plait?!

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Si vous avez des lignes en doublon sur l'ensemble des données de vos tables l'opérateur UNION les supprimera. Est ce votre cas ?

    Vous pouvez le vérifiez en utilisant UNION ALL qui ne supprime pas les doublons ...

    ++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    Non les lignes qui n'apparaissent pas ne sont pas des doublons.

  4. #4
    Membre chevronné Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Points : 2 145
    Points
    2 145
    Par défaut
    Que donne l'utilisation du UNION ALL ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 61
    Points
    61
    Par défaut
    L'utilisation du UNION ALL m'a retourné le même résultat.

    Mais en fait le problème est réglé et ce n'était pas du tout un problème de SQL SERVER....

    En fait je code en ASP et lorsque j'ai constitué ma requête avec les UNION j'ai écrit ma ligne de la façon suivante:

    A union b; union c union d

    C'est donc le point virgule qui chamboulé tous mes résultats !

    Merci pour votre aide.

Discussions similaires

  1. [SQL] Erreur sur une requète avec un Like
    Par heruwenli dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/05/2007, 14h29
  2. Réponses: 5
    Dernier message: 06/01/2007, 04h48
  3. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  4. [VBA] Erreur sur une requête avec un opérateur
    Par elgringo2007 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2006, 17h12
  5. Pb résultats d'une requête avec ou sans Recordset
    Par fredeau dans le forum Access
    Réponses: 3
    Dernier message: 24/04/2006, 14h07

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