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

PHP & Base de données Discussion :

[SQL] Recherche sur 2 critères


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut [SQL] Recherche sur 2 critères
    Bonjour,

    J'ai une table avec des personnes ainsi que d'autres infos qui sont "pointés" tout les mois. Dans cette table une personne est pointé au mois de janvier, février, mars..... il existe autant de lignes que la personne est "pointé". Par contre au cours de l'année cette personne évolue dans la société. Ainsi elle peut être au niveau 1 pendant les 3 premiers mois et au niveau 2 à partir des mois suivants. Elle ne peut pas revenir en arrière.
    NOM / PRENOM / DATE_NAISSANCE / MOIS / ANNEE / NIVEAU
    NOM1 /PRENOM1 /01-01-1970 /1 /2008 /1
    NOM1 /PRENOM1 /01-01-1970 /2 /2008 /1
    NOM1 /PRENOM1 /01-01-1970 /3 /2008 /1
    NOM1 /PRENOM1 /01-01-1970 /4 /2008 /2
    NOM1 /PRENOM1 /01-01-1970 /5 /2008 /2
    NOM2 /PRENOM2 /02-01-1970 /1 /2008 /1
    NOM2 /PRENOM2 /02-01-1970 /2 /2008 /1
    NOM2 /PRENOM2 /02-01-1970 /3 /2008 /1
    Ce que je voudrais c'est requêter la personne qui a changé au cours de l'année.
    J'ai donc fait une requéte mais elle me donne toute les personne qui sont en 1 et 2. Moi je veux que celles qui ont changés dans la période.
    SELECT *
    FROM ma_table1
    WHERE NIVEAU IN (1,2)
    AND ANNEE = 2008

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je te propose ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     SELECT nom, prenom, count(niveau) as changement
    FROM ma_table1
    WHERE ANNEE = 2008 
    HAVING changement > 1
    GROUP BY id_utilisateur
    Je te conseille plutot d'enregistrer l'id de la personne plutot que nom / prenom car si tu as des homonymes, ils vont se mélanger.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Dans mon cas le niveau est 85 et 87 et il existe un niveau 86 que je ne veux pas requêté!!! Donc cela ne fonctionne pas avec >. Peut-on metrre autre chose ????

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans ma requete, on compte le nombre de niveau qu'a eu une personne.
    "HAVING changement > 1" c'est pour limiter aux personnes ayant eu plus d'un niveau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Rebonjour,

    Désolé mais je n'avais jamais employé cette commande. J'ai compris son fonctionnement dans ton 2 mail. Par contre j'ai une erreur sur "HAVING changement >1"
    ORA-00904: "CHANGEMENT" : identificateur non valide
    Je précise que j'utilise SQL tools pour faire mes requêtes.

    En fait il suffit de mettre des ' autour de "changement" et de "1" pour que cela fonctionne.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est une base oracle ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Rebonjour

    Je ne connais pas le système qui gére cette base de données, mais je sais que je fais que des requêtes en SQL D'ailleur à quoi puis-je voir si c'est ORACLE ou autre chose ??. J'ai enfin réussi à faire la requête par contre je ressort "9 changements" sur l'année 2008 pour chaque personne. Je pensais faire un count (distinct niveau) pour eviter les doublons. (Ce qui fonctionne d'ailleurs)
    Mon probléme reste situé sur le chiffre de "changement" car dans mon résultat j'ai tous ceux qui ont un changement alors que je demande plus de "1"

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom, prenom, count(niveau) as changement
    FROM ma_table1
    WHERE ANNEE = 2008 
    GROUP BY id_utilisateur 
    HAVING changement > 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Rebonjour,

    Il me dit toujours Nombre non valide...

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà ce n'est pas la meme erreur.

    Tu pourrais nous mettre la requête exacte que tu fais ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Rebonjour,
    Voilà la requête. Elle fonctionne par contre elle me renvoi les "changement 1" et plus, moi je voudrais que les changements 2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ID, NOM, PRENOM, Count (DISTINCT NIVEAU) AS changement, INDICE
    FROM personnel
    WHERE ANNEE = 2008 AND NIVEAU IN (85,87)
    GROUP BY ID, NOM, PRENOM, INDICE 
    HAVING 'changement' > '1'

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca serait bien de travailler avec la requete que j'ai proposé pour un début

    parce que "COUNT(DISTINCT niveau)" par exemple je ne sais pas trop ce que ca peut donner.

    De même pourquoi faire un GROUP BY sur autre chose que l'id ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Bonjour Sabotage,
    Voilà quand je fais la requête que tu m'as donné en premier j'arrive à cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00904: "CHANGEMENT" : identificateur non valide
    Je change donc en mettant des ' ca me donne une autre erreur sur le "nom" de select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00979: N'est pas une expression GROUP BY
    Je rajoute donc dans le group by le "nom" ainsi que le "prenom". Ensuite le système commence à travailler puis s'arrêtte avec une erreur sur le chiffre "1" dans having
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01722: Nombre non valide
    Voilà l'exposé de mes soucis.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si ca ne marche pas comme ca, il faudra voir la syntaxe dans ta doc oracle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom, prenom, count(niveau) changement
    FROM ma_table1
    WHERE ANNEE = 2008 
    GROUP BY id_utilisateur 
    HAVING changement > 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 80
    Points : 43
    Points
    43
    Par défaut
    Re bonjour,

    Même problème j'ai un soucis sur le nombre....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01722: Nombre non valide

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si un oracleur pouvait passer ici

    et comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom, prenom, count(*) changement
    FROM ma_table1
    WHERE ANNEE = 2008 
    GROUP BY id_utilisateur 
    HAVING changement > 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    Peut tu donner ta requete et le message d'erreur qu'elle genère s'il te plait ? ça ne semble pas bien difficile pourtant (et la requete de sabotage a l'air complètement correcte, je ne vois pas où est le problème ?)

  18. #18
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    pourquoi ne pas mettre simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT nom, prenom, count(*) As changement
    FROM ma_table1
    WHERE ANNEE = 2008 
    GROUP BY id_utilisateur 
    HAVING count(*) > 1

Discussions similaires

  1. [XL-2007] Formulaire VBA Excel - recherche sur plusieurs critères et affichage des résultats
    Par kl1ft dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/08/2016, 20h44
  2. sql recherche sur plusieurs table / commande IN
    Par Tonio13006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/05/2008, 14h29
  3. [VBA-SQL] Recherche sur *nom*
    Par GarsDuCalvados dans le forum Access
    Réponses: 13
    Dernier message: 22/02/2007, 11h17
  4. [MySQL/SQL Server] Sur quels critères choisir ?
    Par Essedik dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 08/03/2006, 09h05
  5. [PostGre SQL] Recherche sur un champs
    Par Cyberbob002 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/01/2006, 11h57

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