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

Langage SQL Discussion :

Requête avec colonnes non liées


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut Requête avec colonnes non liées
    Bonjour,

    Je voulais savoir s'il était possible de faire ceci en SQL :

    J'ai 2 tables :
    TABLE A :
    ID VALUE_A
    BEN1 VALEUR1
    BEN1 VALEUR2
    BEN1 VALEUR3

    TABLE B :
    ID VALUE_B
    BEN1 VAL1
    BEN1 VAL2

    La colonne "ID" permet de faire la jointure entre ces 2 tables.

    Le résultat de la jointure entre ces 2 tables seraient donc :
    TABLE RES :
    ID VALUE_A VALUE_B
    BEN1 VALEUR1 VAL1
    BEN1 VALEUR2 VAL1
    BEN1 VALEUR3 VAL1
    BEN1 VALEUR1 VAL2
    BEN1 VALEUR2 VAL2
    BEN1 VALEUR3 VAL2

    Mais là on me demande d'avoir ce résultat :
    TABLE RES :
    ID VALUE_A VALUE_B
    BEN1 VALEUR1 VAL1
    BEN1 VALEUR2 VAL2
    BEN1 VALEUR3

    Est-ce possible ? Sachant que les colonnes VALUE_A et VALUE_B n'ont aucun lien entre elles.

    Merci d'avance pour votre aide.

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

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,

    Visiblement, il faut se baser sur le dernier caractère.
    Il faut donc extraire le dernier caractère des deux valeurs, et faire une comparaison dans la jointure.
    Mais quid de VALEUR10, VALEUR2561 ?

    En tout cas je soupçonne un petit problème de modélisation ici (deux valeurs concaténées dans une seule colonne, pour ces deux tables).

    Tatayo.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    Merci pour la réponse mais les valeurs sont des valeurs fictives.
    A la place de VAL1 j'aurais pu mettre "toto" et à la place de VALEUR1 "ballon".

    Ma question est plus sur la forme de la restitution, pour éviter de faire un produit cartésien.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Là je ne vois pas comment faire le lien entre des données qui n'ont aucun lien entre elles.

    Qu'est-ce qui permet de savoir qu'il faut mettre VALEUR1 "sur la même ligne" que VAL1 ?

    Si la réponse est "rien", je crains qu'il n'existe pas de solution.

    Tatayo.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    235
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 235
    Points : 183
    Points
    183
    Par défaut
    La réponse est en effet : rien

    J'aurais très bien pu avoir VALEUR2, VAL1 et ça aurait été correct.
    Le seul lien c'est l'ID "BEN1".
    Les 2 autres colonnes doivent vraiment être indépendantes et exister de manière indépendante l'une de l'autre.
    L'une peut avoir 15 valeur alors que l'autre seulement 2.

    Une sorte de "UNION" mais en colonne et non en ligne

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    J'ai finalement peut-être un début de piste:
    Tu crées 2 CTE, une pour chaque table, qui en plus de renvoyer la fameuse donnée ajoute un numéro de ligne (row_number() ? ).
    Ensuite dans la requête principale tu fais le lien entre ces 2 CTE via le numéro de ligne.

    Mais ça renvient en gros à faire le lien entre des choux et des pneus.
    Mais si c'est ce qui est demandé…

    Tatayo.

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Je trouve que ça ressemble à un énoncé mal rédigé (avec une erreur d'inattention, de copier/coller). Ça ne serait pas plutôt:
    ID VALUE_A
    BEN1 VALEUR1
    BEN2 VALEUR2
    BEN3 VALEUR3
    et
    ID VALUE_B
    BEN1 VAL1
    BEN2 VAL2

    Ce qui donnerait au final:
    ID VALUE_A VALUE_B
    BEN1 VALEUR1 VAL1
    BEN2 VALEUR2 VAL2
    BEN3 VALEUR3

    Ça a déjà plus de sens? En plus partir de tables sans clef primaire c'est un peu étrange? Et demander un résultat dépendant de l'ordre d'insertion des données dans les tables l'est aussi.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. [WD12] Table fichier avec colonne non liée
    Par david77320 dans le forum WinDev
    Réponses: 1
    Dernier message: 17/10/2008, 11h09
  2. ADOQuery avec Checkbox non liée aux données
    Par StarMusic dans le forum Delphi
    Réponses: 6
    Dernier message: 25/05/2007, 16h45
  3. Réponses: 2
    Dernier message: 20/06/2006, 16h32
  4. Réponses: 1
    Dernier message: 28/09/2005, 18h10
  5. [Oracle] Requête avec colonne optionnelle
    Par Original Prankster dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/08/2005, 09h24

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