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

 MySQL Discussion :

Problème de requête sql


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Juillet 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 92
    Par défaut Problème de requête sql
    Bonjour à tous

    Je pense que la réponse dois être toute con mais je ne trouve pas la solution

    Voici une parti de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ((YEAR( CURRENT_DATE ) - YEAR( DATENAISSANCE )) - 	(RIGHT( CURRENT_DATE, 5 ) < RIGHT( DATENAISSANCE, 5 ) )	) AS age
    FROM PROFIL WHERE age 
    BETWEEN 	
    (SELECT AGEMINRECH FROM RECHERCHER  WHERE IDPROFIL =1) 
    AND
    (SELECT AGEMAXRECH FROM RECHERCHER WHERE IDPROFIL 1)
    Mon problème est que dans ma clause WHERE il ne reconnais pas la colonne age créer dans le select....

    Merci d'avance

  2. #2
    Membre actif
    Inscrit en
    Juillet 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 92
    Par défaut
    Bon laissez tomber j'ai trouver plus simple

    Par contre j'ai une autre question :

    J'ai une requête seulement dans ma condition where j'ai une ligne du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pe.FUMEUR = (SELECT FUMEURRECH FROM RECHERCHER WHERE IDPROFIL =1)
    Je voudrais que si ma sous requete select me renvois un champ vide il saute cette ligne dans ma codition where est ce possible?

  3. #3
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pe.FUMEUR = (SELECT FUMEURRECH FROM RECHERCHER WHERE IDPROFIL =1)
    Je ne suis pas sûr de te suivre. Pourquoi n'utilises tu pas simplement un "IS NOT NULL" pour ne récupérer que les lignes contenants des champs remplis ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE tonChamp IS NOT NULL OR tonChamp = ""

  4. #4
    Membre actif
    Inscrit en
    Juillet 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 92
    Par défaut
    en gros j'ai une table profil et une table rechercher et la je veux resortir tous les profil qui correspondent au critere enregistré dans ma table rechercher.

    le seul truc c'est que si le champs de la table rechercher est null il ne dois pas prendre en compte la condition where

    Je sais pas si je me fais bien comprendre :/

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    J'ai l'impression que des jointures pourraient t'aider...
    On peut avoir la structure des tables ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  6. #6
    Membre actif
    Inscrit en
    Juillet 2009
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 92
    Par défaut
    Alors voici les tables que j'utilise dans ma requete

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    create table PROFIL
    (
        IDPROFIL              INTEGER               not null auto_increment,
        PSEUDO                CHAR(50)              not null,
        IDPERSO               INTEGER                       ,
        IDLOCA                INTEGER               not null,
        IDPRESENTATION        INTEGER                       ,
        IDDITEPLUS            INTEGER                       ,
        SEXE                  CHAR(6)               not null,
        DATENAISSANCE         DATE                  not null,
        LANGUEPARLER          CHAR(100)                      ,
        TAILLE                INTEGER                       ,
        CHEVEUX               CHAR(50)                      ,
        NIVETUDE              CHAR(50)                      ,
        CATPROF               CHAR(50)                      ,
        STATMARITAL           CHAR(50)                      ,
        ETHNIC                CHAR(50)                      ,
        YEUX                  CHAR(50)                      ,
        PROFESSION            CHAR(50)                      ,
        LONGUEURCHEVEUX       CHAR(50)                      ,
        SIGNEPART             CHAR(50)                      ,
        ATTRAY                CHAR(50)                      ,
        PILOSITE              CHAR(50)                      ,
        SILHOUETTE            CHAR(50)                      ,
        primary key (IDPROFIL) 
    )ENGINE= InnoDB;
     
     
    create table RECHERCHER
    (
        IDPROFIL              	INTEGER               not null,
        PSEUDORECH            	CHAR(50)                      ,
        SEXERECH              	CHAR(50)                      ,
        AGEMINRECH            	INTEGER                       ,
        AGEMAXRECH            	INTEGER                       ,
        TAILLEMINRECH         	INTEGER                       ,
        TAILLEMAXRECH         	INTEGER                       ,
        SILHOURECH            	CHAR(50)                      ,
        ETHNICRECH            	CHAR(50)                      ,
        STATRECH              	CHAR(50)                      ,
        FUMEURRECH            	CHAR(50)                      ,
        DESIRERECH            	CHAR(150)                      ,
        ENVICONCRETIRECH      	CHAR(150)                      ,
        NATRECH               	CHAR(50)                      ,
        primary key (IDPROFIL) 
    )ENGINE= InnoDB;
     
     
    create table PERSONNALITE
    (
        IDPERSO               INTEGER               not null auto_increment,
        STYLEVIE              CHAR(150)                      ,
        FUMEUR                CHAR(50)                      ,
        LOOK                  CHAR(50)                      ,
        CARACTERE              CHAR(250)                      ,
        LIEUPREF              CHAR(150)                      ,
        VOYAGEREA             CHAR(150)                      ,
        CUISINE               CHAR(150)                      ,
        PLATFAV               CHAR(100)                      ,
        SEXUALITE             CHAR(100)                      ,
        PREFSEX               CHAR(100)                      ,
        SORTI                 CHAR(250)                      ,
        ACTSPORTIVE           CHAR(250)                      ,
        primary key (IDPERSO) 
    )ENGINE= InnoDB;
    Voici les clès étrangère :

    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
    24
     
    alter table PROFIL
        add constraint foreign key (PSEUDO)
           references CONNEXION (PSEUDO);
     
    alter table PROFIL
        add constraint foreign key (IDPERSO)
           references PERSONNALITE (IDPERSO);
     
    alter table PROFIL
        add constraint foreign key (IDLOCA)
           references LOCALISATION (IDLOCA);
     
    alter table PROFIL
        add constraint foreign key (IDPRESENTATION)
           references PRESENTATION (IDPRESENTATION);
     
    alter table PROFIL
        add constraint foreign key (IDDITEPLUS)
           references DITEPLUS (IDDITEPLUS);
     
    alter table RECHERCHER
        add constraint foreign key (IDPROFIL)
           references PROFIL (IDPROFIL);
    Et la voici ma requete actuelle :

    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
    24
    25
     
    SELECT P.IDPROFIL, P.PSEUDO
    FROM PROFIL as P 
    LEFT OUTER JOIN PERSONNALITE AS Pe ON P.IDPERSO = Pe.IDPERSO 
    WHERE
    (	
    	IF((SELECT PSEUDORECH FROM RECHERCHER WHERE IDPROFIL =1 )='', '1',PSEUDO = (SELECT PSEUDORECH FROM RECHERCHER WHERE IDPROFIL =1 ))
    	AND
    	P.SEXE = (SELECT SEXERECH FROM RECHERCHER WHERE IDPROFIL =1)
    	AND 
    	(YEAR( CURRENT_DATE ) - YEAR( P.DATENAISSANCE )) - (RIGHT( CURRENT_DATE, 5 ) < RIGHT( P.DATENAISSANCE, 5 ))
    	BETWEEN (SELECT AGEMINRECH FROM RECHERCHER WHERE IDPROFIL =2)AND (SELECT AGEMAXRECH FROM RECHERCHER WHERE IDPROFIL =1)
    	AND
    	P.TAILLE BETWEEN (SELECT TAILLEMINRECH FROM RECHERCHER WHERE IDPROFIL =2) AND (SELECT TAILLEMAXRECH FROM RECHERCHER WHERE IDPROFIL =1)
    	AND
    	IF((SELECT SILHOURECH FROM RECHERCHER WHERE IDPROFIL =1)='', '1', P.SILHOUETTE = (SELECT SILHOURECH FROM RECHERCHER WHERE IDPROFIL =1))
    	AND
    	IF((SELECT ETHNICRECH FROM RECHERCHER WHERE IDPROFIL =1)='', '1', P.ETHNIC = (SELECT ETHNICRECH FROM RECHERCHER WHERE IDPROFIL =1))
    	AND
    	IF((SELECT STATRECH FROM RECHERCHER WHERE IDPROFIL =1)='', '1', P.STATMARITAL = (SELECT STATRECH FROM RECHERCHER WHERE IDPROFIL =1))
    	AND
    	IF((SELECT FUMEURRECH FROM RECHERCHER WHERE IDPROFIL =1	)='', '1' ,Pe.FUMEUR = (SELECT FUMEURRECH FROM RECHERCHER WHERE IDPROFIL =1))
    	AND
    	IF((SELECT NATRECH FROM RECHERCHER WHERE IDPROFIL =1)='', '1', Pe.SEXUALITE = (SELECT NATRECH FROM RECHERCHER WHERE IDPROFIL =1))
    )
    Ne me parlais meme pas de l'etat du code je sais qu'il est a chier mais avec ce qu'on me demande je vois pas comment faire autrement sans utilisé un language annexe... lol

    Ce code fonctionne excepté pour une chose maintenant car
    si dans la table profil il n'y a pas d'idPerso, IL ne me renvois aucun ligne...

    A savoir que le IDPErso n'est pas obligatoire

Discussions similaires

  1. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15
  2. problème de requète SQL pour formulaire
    Par en_stage dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 21/06/2005, 12h21
  3. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07
  4. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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