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

SQL Oracle Discussion :

Echec de l'UNION de 2 requêtes avec le message "Plus aucune donnée à lire dans le socket"


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    requêteur sur base oracle avec SQL DEVELOPPER
    Inscrit en
    Avril 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : requêteur sur base oracle avec SQL DEVELOPPER

    Informations forums :
    Inscription : Avril 2022
    Messages : 17
    Par défaut Echec de l'UNION de 2 requêtes avec le message "Plus aucune donnée à lire dans le socket"
    Bonjour à tous,
    N'ayant pas trouvé de posts évoquant un problème similaire au mien (désolée si je n'ai pas suffisant cherchén ou bien cherché), je me permets de vous solliciter ici.
    J'utilise l'outil SQLDEVELOPER, Version 21.4.1.349, Build 349.1822, pour requêter sur une BDD Oracle.
    J'utilise la fonction WITH pour travailler différentes cibles et l'objectif est de terminer par un UNION des 2 cibles finales.
    J'ai donc 1 partie commune, puis 2 branches parallèles pour compléter des données spécifiques à ma cible 1 puis à ma cible 2, enfin partie commune grâce à UNION.
    Lorsque je lance la requête pour sortir la cible 1 => OK
    Lorsque je lance la requête pour sortir la cible 2 => OK
    Lorsque je lance l'UNION des 2 requêtes et que je contrôle que j'ai bien l'ensemble, je trouve 15 lignes ayant disparue dans l'UNION
    Lorsque je lance la requête UNION sur ces seules 15 lignes, j'obtiens le message "Plus de données à lire dans le socket".
    Je me casse les dents sur ce soucis depuis le début de la semaine et après avoir contrôlé tout ce que je pouvais, je ne trouve pas d'explication, d'où mon appel à l'aide.
    Je précise que bien que l'UNION fontionne, mais partiellement, j'ai contrôlé que j'ai bien le même nombre de colonnes, libellées à l'identique, de même strucuture ...
    Je vous remercie par avance de votre lecture et de votre aide éventuelle.
    Dans l'attente, je vous souhaite une excellente journée.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 462
    Par défaut
    Bonjour,
    Sans voir les requêtes concernées, sans avoir de jeu de test ni de résultat attendu, difficile de répondre…
    Une première piste: UNION supprime les doublons, donc le nombre de lignes de l'UNION peut être différent de la somme du nombres de lignes de chaque requête.

    UNION ALL permet de garder les doublons.

    Tatayo.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Sans les requêtes ça va être compliqué. L'erreur que tu obtiens peut être lié à un bug. As-tu essayé d'exécuter ta requête depuis SQL*Plus?

  4. #4
    Membre averti
    Femme Profil pro
    requêteur sur base oracle avec SQL DEVELOPPER
    Inscrit en
    Avril 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : requêteur sur base oracle avec SQL DEVELOPPER

    Informations forums :
    Inscription : Avril 2022
    Messages : 17
    Par défaut Réponse vanagreg
    Bonjour et merci du retour rapide.

    Je n'ai que SQLDeveloper pour requêter sur la BDD, et uniquement en "intéractif" pas de PL-SQL, pas possible de créer des tables intermédiaires ...
    Bonne journée.

    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Sans les requêtes ça va être compliqué. L'erreur que tu obtiens peut être lié à un bug. As-tu essayé d'exécuter ta requête depuis SQL*Plus?

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 462
    Par défaut
    Quand je parle de doublon, c'est aussi entre les deux requêtes.
    Par exemple si on retrouve une même ligne dans le résultat de chaque requête, avec un UNION cette ligne n'apparaitra qu'une seule fois dans le résultat final, et 2 fois avec un UNION ALL.

    Concernant les requêtes et le jeu de test, il n'est pas obligatoire d'avoir des données réelles. Il faut juste qu'elles permettent de reproduire le problème.

    Quoi qu'il en soit sans plus d'éléments, on en est réduits à des hypothèses.

    Tatayo.

  6. #6
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 878
    Billets dans le blog
    3
    Par défaut
    En d'autres mots, ton "UNION" fait un DISTINCT automatiquement - et parfois un ORDER BY selon les SGBD.

    Si tu veux pas faire de DISTINCT, il faut mettre "UNION ALL" à la place de "UNION".
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  7. #7
    Membre averti
    Femme Profil pro
    requêteur sur base oracle avec SQL DEVELOPPER
    Inscrit en
    Avril 2022
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : requêteur sur base oracle avec SQL DEVELOPPER

    Informations forums :
    Inscription : Avril 2022
    Messages : 17
    Par défaut Réponse Tatayo
    Bonjour Tatayo, merci pour ce 1er retour rapide.
    Je suis déjà sans doublon dans chacune des 2 requêtes à unir, d'où l'utilisation de UNION
    Je vais tout de même utiliser UNION ALL au cas où ... Les mystères de l'informatique sont une réalité !

    Je peux peu-être transmettre la requête, mais pas de jeu de test, pour raison RGPD entre autres.
    Mais je reprécise ici que reqête 1 et 2 prises séparément donne 100% du résultat attendu, seul l'UNION des 2 arrive à ce message incompréhensible pour moi.

    Merci



    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Sans voir les requêtes concernées, sans avoir de jeu de test ni de résultat attendu, difficile de répondre…
    Une première piste: UNION supprime les doublons, donc le nombre de lignes de l'UNION peut être différent de la somme du nombres de lignes de chaque requête.

    UNION ALL permet de garder les doublons.

    Tatayo.

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

Discussions similaires

  1. Union de 2 requêtes avec COUNT
    Par popo79pr dans le forum Développement
    Réponses: 2
    Dernier message: 26/10/2016, 16h50
  2. [AC-2007] Union de plusieurs requête avec fonction GROUP BY
    Par py86acces dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/04/2016, 22h05
  3. [AC-2007] Union de plusieurs requête avec fonction GROUP BY
    Par py86acces dans le forum Access
    Réponses: 1
    Dernier message: 17/04/2016, 22h05
  4. Réponses: 4
    Dernier message: 04/07/2015, 18h43
  5. Réponses: 1
    Dernier message: 24/07/2007, 12h10

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