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 :

SELECT sur id unique [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut SELECT sur id unique
    salutatous,

    j'ai créé une table 'ma_table' dans laquelle j'ai 5 champs :

    - id
    - intro
    - seminaire
    - date_debut
    - date_fin

    dans toute ma table, un seul id possèdera du contenu pour 'intro'

    le contenu de 'ma_table' se présentera donc comme ceci :

    1, blablabla_intro, blablabla_seminaire, 2011-02-10, 2011-02-11
    2, , blablabla_seminaire, 2011-05-27, 2011-05-28
    3, , blablabla_seminaire, 2011-08-22, 2011-08-23
    ... etc ...

    je souhaite afficher uniquement le contenu de 'intro' :

    au sein d'une boucle, avec une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT intro FROM ma_table';
    ça m'affiche :
    - 'blablabla_intro' pour l'id 1
    - rien pour l'id 2
    - rien pour l'id 3

    mais je souhaite afficher uniquement l'id qui possède un contenu pour 'intro'

    si je fait une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT intro FROM ma_table WHERE id=1';
    ça m'affiche bien l'unique id possèdant du contenu pour 'intro'

    ET VOICI MA QUESTION :
    comment faire une requête qui repère et affiche automatiquement l'unique id qui possède un contenu pour 'intro' ?

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    question de débutant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM latable WHERE intro NOT NULL ;
    edit 1, dsl mal lu la question.
    edit 2, ya tres peu de chance que cet id soit unique. Pour la condition j'hésite entre not null et LIKE '%' voir LIKE '_%'

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Faudrait vérifier dans la table si le valeur est réellement NULL, et non vide, car MySQL fait le distingo entre une valeur NULL est vide.

    D'ailleurs, vu qu'il soit autorisé de rien avoir dans ce champ "intro", il faudrait coté structure accepter les valeurs NULL.
    Puis coté fonctionnement s'assurer lors d'une insertion ou mise à jour de bien enregistrer une valeur NULL (et non vide).

    A ce moment là une requête comme ci-dessus devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT intro
    FROM ma_table
    WHERE intro IS NOT NULL
    Devrait retourner tous les intro non NULL.
    Et si tu est certain qu'il y en a qu'un qui est NULL, 1 seul intro sera retourné.


    comment faire une requête qui repère et affiche automatiquement l'unique id qui possède un contenu pour 'intro' ?
    C'est plutôt l'inverse que tu souhaite obtenir, non ?
    Soit obtenir l'unique ID donc l'intro est NULL ?
    Dans ton exemple, il n'y en a qu'1 qui ne possède pas d'intro, tous les autres en ont.

    Pour avoir l'unique ID dont l'intro est NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT intro
    FROM ma_table
    WHERE intro IS NULL

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    NOT NULL n'est pas bon dans ce cas car la valeur est vide et non null, si tu garde cette structure tu doit plutôt appliquer une requête du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM matable WHERE intro <> '';

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    tout d'abord merci à tous pour votre réactivité

    j'ai essayé les solutions proposées mais j'ai des erreurs !

    voici mon code de base :

    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
    $sql = 'SELECT intro FROM ma_table WHERE id=1';
     
    $sql_bis = mysql_query($sql);
    echo mysql_error();
     
    // +++++++++++++++++++++++++++++++++++++
     
    // si aucune donnée
    if($intro == '') {
     
    	echo 'AFFICHAGE 1';
    	echo '<br /><br />';
     
    // si on obtiens des données
    } else {
     
    	echo 'AFFICHAGE 2';
    	echo '<br /><br />';
    }
    si je met cette requête, sugérée par gene69 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id FROM ma_table WHERE intro NOT NULL';
    j'ai le message d'erreur suivant :
    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 'NOT NULL' at line 1

    j'ai également essayé de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id FROM ma_table WHERE NOT ISNULL(intro)';
    et j'obtiens le même message d'erreur !

    j'ai donc essayé de mettre la solution de RunCodePhp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT intro FROM ma_table WHERE intro IS NOT NULL';
    j'obtiens à nouveau le même message d'erreur !

    si je met la requête proposée par gwharl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT id FROM ma_table WHERE intro <> ''';
    j'obtiens le message d'erreur suivant :
    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/balablabla/balablabla...

    Bref je m'en sors pas...

    pour info j'ai créé 'intro' dans ma table, comme ceci :
    `intro` mediumtext NOT NULL

    Nico

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Entoure ta requête par des doubles quotes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM ma_table WHERE intro <> ''";
    Les autres requête ne marcherons pas car tu n'as pas de valeur null mais vides.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    IS NULL ou IS NOT NULL est pourtant une syntaxe 100% valide (pour MySQL au moins).
    Tu ne devrais pas avoir d'erreur de syntaxe à ce niveau, juste obtenir ou pas de résultat.
    Donc l'erreur viendrait ailleurs.

    Ceci dit, comme je l'avais expliqué, si une donnée doit être NULL, il vaut mieux faire en sorte quelle soit réellement NULL plutôt qu'une pseudo valeur comme vide.
    NULL est pour ainsi dire une valeur à part entière (ni vide, ni 0, ni FALSE), selon le cas comme les jointure de tables, ça peut être un handicap si la valeur n'est pas réellement NULL.


    Aussi, dans ton code tu initialise avec $sql_bis, et après tu exploite $intro.
    Il y a quelque chose qui ne vas pas normalement.


    Mise à part ça, en mettant <> '' (ou != '') fonctionnera mieux si c'est des valeurs vides comme l'a proposé gwharl.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    gwharl,

    cool, ça fonctionne si je met entre double quote

    MAIS si je met comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT id FROM client_" . $ma_table . "WHERE intro <> ''";
    j'ai l'erreur suivante :
    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 '<> ''' at line 1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JS : controler de selection de choix unique sur valeur type liste
    Par LutorCorp dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/09/2007, 15h38
  2. [SELECT sur 16 millions de lignes] délai très grand
    Par localhost dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/11/2004, 17h04
  3. insert-select sur 2 base différente
    Par gskoala dans le forum Paradox
    Réponses: 2
    Dernier message: 16/11/2004, 15h11
  4. select sur un champ de type LONG
    Par ppd dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2004, 18h19
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

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