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 :

pbk de requete sur 2 tables : recherche de minimum


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut pbk de requete sur 2 tables : recherche de minimum
    Bonjour tout le monde,

    je dois faire une requête qui recherche le minimum, le second minimum et le maximum sur 2 champs kmpvalue et kmsvalue provenant chacun d'une table différente kmp et kms.
    Comment faire? aucune jointure directe n'est possible sur ces 2 tables

    merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Les deux premiers minimums :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT kmpvalue
    FROM kmp
    ORDER BY kmpvalue
    LIMIT 2
    Le maximum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MAX(kmpvalue) AS Maximum
    FROM kmp
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    merci!! mais le probleme c 'est que je veux trouver les deux derniers minimums sur les kmsvalue ET kmpvalue, or ces 2 champs proviennent de 2 tables différentes kmp et kms

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Alors il faut réunir les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT value
    FROM (
      SELECT kpmvalue AS value
      FROM kpm
      UNION
      SELECT kmsvalue AS value
      FROM kms
    )
    ORDER BY value
    LIMIT 2
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    merci pour la réponse, mais ca ne fonctionne pas !! j 'obtiens l'erreur suivante : Every derived table must have its own alias

    pourtant j'ai bien nommé les tables et les champs

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Au temps pour moi, j'avais oublié ce détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT value
    FROM (
      SELECT kpmvalue AS value
      FROM kpm
      UNION
      SELECT kmsvalue AS value
      FROM kms
    ) t <-- il manquait juste ça !
    ORDER BY value
    LIMIT 2
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    merci!! ca marche !! et maintenant j'essaye de rajouter dans la meme requete, la recherche du maximum sur les 2 tables également, mais ca ne fonctionne pas..

    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
    22
     
    SELECT val
    FROM (
       SELECT MAX(KMPValue) AS val
       FROM kmp
       UNION
       SELECT MAX(KMSValue) AS val
       FROM kms
    ) t 
    ORDER BY val
    LIMIT 1
    UNION
    SELECT value
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t 
    ORDER BY value
    LIMIT 2
    si j' effectue deux requetes séparées mais à la suite, il n'y a pas d'erreur, mais il ne m'affiche pas le maximum:

    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
    22
    23
     
    SELECT val
    FROM (
      SELECT MAX(KMPValue) AS val
      FROM kmp
      UNION
      SELECT MAX(KMSValue) AS val
      FROM kms
    ) t
      ORDER BY val
      LIMIT 1;
     
     
    SELECT value
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t 
    ORDER BY value
    LIMIT 2;

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Juste en passant:

    Il te manque une parenthèse fermante au MAX !

    Et tes tris peuvent être croissants ou décroissants
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  9. #9
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    merci j'ai corrigé et mysql trie par ordre croissant par défaut et c'est ce qu'il me faut

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Salut,

    Il manque une parenthèse dans ta première requête, essaie plutot comme ça :
    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
    SELECT max(val) as value
    FROM (
       SELECT KMPValue AS val
       FROM kmp
       UNION
       SELECT KMSValue AS val
       FROM kms
    ) t 
    UNION
    SELECT value
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t 
    ORDER BY value
    LIMIT 2

  11. #11
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    merci! la requete ne m'indique pas d'erreurs mais elle ne m'affiche toujours pas le maximum, seulement les 2 minimums

  12. #12
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Attention avec "UNION" (Par défaut il fait un distinct des data)
    Peut est à utilisé ici
    Signé : Capitaine Jean-Luc Picard

  13. #13
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    J' ai essayé avec union all mais le problème est toujours la : il m'affiche les 2 minimums mais pas le maximum

  14. #14
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu veux deux choses différentes sur la même ligne. Donc il te faut deux colonnes :
    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
    SELECT max(val) AS Maximum, NULL
    FROM (
       SELECT KMPValue AS val
       FROM kmp
       UNION
       SELECT KMSValue AS val
       FROM kms
    ) t1 
    UNION
    (SELECT NULL, value AS Minimums
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t2 
    ORDER BY value
    LIMIT 2)
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    En fait, le limit 2 devait s'appliquer à l'ensemble de la requête.
    Essaie comme ça :
    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
    SELECT max(val) AS value
    FROM (
       SELECT KMPValue AS val
       FROM kmp
       UNION
       SELECT KMSValue AS val
       FROM kms
    ) t 
    UNION
    (SELECT value
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t 
    ORDER BY value
    LIMIT 2)

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    Ben toujours pas... maintenant j'ai cette erreur :

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/SELECT NULL, value AS Minimums
    FROM (
    SELECT KMPValue AS value
    FROM kmp
    ' at line 10

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Snipah Voir le message
    En fait, le limit 2 devait s'appliquer à l'ensemble de la requête.
    Essaie comme ça :
    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
    SELECT max(val) AS value
    FROM (
       SELECT KMPValue AS val
       FROM kmp
       UNION
       SELECT KMSValue AS val
       FROM kms
    ) t 
    UNION
    (SELECT value
    FROM (
      SELECT KMPValue AS value
      FROM kmp
      UNION
      SELECT KMSValue AS value
      FROM kms
    ) t 
    ORDER BY value
    LIMIT 2)
    alors cette fois ya bien les 2 minimums affichés et le maximum, mais c'est pas le bon maximum!! c'est comme si il n'avait pas comparer les 2 maximum kms et kmp et qu'il n'avait pas regardé lequel était plus grand

  18. #18
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par juzii Voir le message
    Ben toujours pas... maintenant j'ai cette erreur :

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/SELECT NULL, value AS Minimums
    FROM (
    SELECT KMPValue AS value
    FROM kmp
    ' at line 10
    Tu as lu le message avant que je le corrige ! Il faut remplacer le / par une (
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 103
    Points : 57
    Points
    57
    Par défaut
    en faite je viens de me rendre compte que le minimum pour kms est 898 et le minimum pour kmp est 9,9 or ces 2 champs ont du être déclaré en varchar. est ce qu'il serait possible que mysql ne sache comparer ces 2 valeurs? ce qui expliquerait pourquoi il ne m'affiche pas le bon maximum

  20. #20
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Euh...
    Citation Envoyé par juzii Voir le message
    en faite je viens de me rendre compte que le minimum pour kms est 898 et le minimum pour kmp est 9,9 or ces 2 champs ont du être déclaré en varchar. est ce qu'il serait possible que mysql ne sache comparer ces 2 valeurs? ce qui expliquerait pourquoi il ne m'affiche pas le bon maximum
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  2. requete sur 2 tables mysql
    Par PAYASS59 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/09/2005, 11h48
  3. Pb requete sur 2 tables
    Par panini182 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2005, 17h26
  4. Requete sur deux tables
    Par ReaseT dans le forum ASP
    Réponses: 13
    Dernier message: 07/02/2005, 16h18
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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