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

Requêtes MySQL Discussion :

Possible en MySQL ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Dev
    Inscrit en
    Février 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2005
    Messages : 60
    Par défaut Possible en MySQL ?
    Bonjour,

    La différence représente la différence entre l'objet A et l'objet B.
    Les colonnes 1 et 2 contiennent les IDs dans objets.
    Je souhaite rapprocher un objet de type A avec le type B le plus proche.
    Si un rapprochement est fait entre un objet A (id=1) et un objet B (id=2) alors je ne peux plus
    utiliser ces IDs dans le rapprochement.
    Dans le tableau ci-dessous, j'aimerais ressortir les duos rapprochés 14-10 et 53-1. Est-ce possible en SQL ?

    Différence Objet A Objet B
    1 14 10
    5 14 1
    8 53 10
    12 53 1
    22 74 10
    26 74 1

    Merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    C'est moi qui ai du mal à comprendre ou le problème est mal exposé ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Profil pro
    Dev
    Inscrit en
    Février 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2005
    Messages : 60
    Par défaut ok
    Je suis dessus depuis un petit moment, j'ai peut être utilisé des raccourcis.
    Ou c'est peut-être vraiment mal exposé.
    J'ai trouvé un exemple plus imagé et plus parlant (peut-être).


    Imaginons je voudrais rapprocher des hommes (colonne 2) et des femmes (colonne 3) suivant un score que j'ai (colonne 1).
    Plus ce score est bas, plus les personnes sont proches.

    Dans l'idéal, je commence à créer des couples en commençant par le meilleur score.
    Lorsque je crée un couple, l'homme et la femme de ce couple ne peuvent plus être utilisés dans la création d'un autre couple.

    C'est cette dernière contrainte que je n'arrive à retranscrire en SQL.

    Et donc dans le tableau donné en exemple, il faudrait qu'en SQL j'arrive à sortir les couples 14-10 et 53-1.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Faute d'informations plus précise, je peux toutefois te proposer quelque chose dans ce style :
    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
    WITH    tb1
    AS  (   SELECT  score
                ,   id1
                ,   ROW_NUMBER()    OVER (ORDER BY critère)   AS rang
            FROM    table1       
        )
        ,   tb2
    AS  (   SELECT  score
                ,   id2
                ,   ROW_NUMBER()    OVER (ORDER BY critère)   AS rang
            FROM    table2       
        )
    SELECT  tb1.score
        ,   tb1.id1
        ,   tb2.id2
    FROM    tb1
        INNER JOIN
            tb2
            ON  tb1.score   = tb2.score
            AND tb1.rang    = tb2.rang
    ;
    A toi d'identifier fonctionnellement le critère qui te permettra d'ordonner tes listes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre confirmé
    Profil pro
    Dev
    Inscrit en
    Février 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Février 2005
    Messages : 60
    Par défaut Ouahou
    OVER a l'air très intéressant.
    J'ai un peu de mal à la passer sur MySQL, tu saurais l'écrire pour ce type de base ?

    Sinon le score n'est pas une donnée propre à une femme ou un homme, mais le résultat d'un calcul sur un champ de homme et un champ de femme.

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Les fonctions de fenêtrage (comme ROW_NUMBER() OVER()) n'existent pas sous MySQL...
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. Gestion des exceptions possibles avec MySQL ?
    Par Alain Defrance dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/07/2008, 14h45
  2. [MYSQL] utilisation des TZ sous delphi possible?
    Par douill dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/03/2005, 17h19
  3. [API mySQL] - Connexion à un serveur distant possible ?
    Par PyRoFlo dans le forum Bases de données
    Réponses: 5
    Dernier message: 10/02/2005, 22h23
  4. [MySQL] -> Cest possible ? Comment faire ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/05/2004, 13h57
  5. possible sur MySQL 4.0 ?
    Par djforest dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/06/2003, 09h49

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