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 :

Requête pour éliminer les enregistrements NULL


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut Requête pour éliminer les enregistrements NULL
    Bonjour à tous,
    j'ai besoin d'un petit conseil ou plutôt une aide sur une requête relativement simple mais on ne peux tout connaitre
    En faites je souhaite éjecter ou plutôt mettre en dernier les enregistrement qui n'ont pas d'adresse mail facile .
    Mais le problème c'est qu'il faut qu'il sois trié par date d'insertion.
    Genre le dernier insérer est le premier vu mais pour autant qu'il ai une adresse.
    disons j'ai 5 champs :
    • id
    • email
    • date_insertion
    • lang
    • sector_activity

    je dois absolument passer dans l'url deux argument (lang et sector_activity)
    ce que je fais très bien
    Mais c'est pour le triage comme cité plus haut que sa coince:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE lang = :lang AND sector_activity = :sector_activity ORDER BY date_insertion DESC, email DESC

  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
    J'ai peur qu'il faille faire deux requetes.

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    donc faire d'abord cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE lang = :lang AND sector_activity = :sector_activity
    et ensuite faire une autre rien que pour le tri c'est sa ?
    Si oui la deuxième aurai quoi ? dois je utiliser un order by + Group by pour les tris

  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
    Non je pensais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE lang = :lang AND sector_activity = :sector_activity WHERE email IS NOT NULL ORDER BY id DESC
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE lang = :lang AND sector_activity = :sector_activity WHERE email IS NULL ORDER BY id DESC

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Peux-tu essayer si ceci te convient :

    tu rajoutes une colonne dans le SELECT pour savoir si le champ "email" est renseigné ou non, ce qui te permet de faire un tri sur cette colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT IF(email is null, 1, 0) is_email
         , id
         , email
         , date_insertion
         , lang
         , sector_activity
      FROM matable
      WHERE lang = :lang
        AND sector_activity = :sector_activity
      ORDER BY is_email ASC
             , date_insertion DESC
             , email ASC
    (si tu as une erreur du genre "colonne is_email inconnue, utilise la clause ORDER BY suivante :

    "ORDER BY 1 ASC, date_insertion DESC, email ASC"


    HTH
    DBRep

  6. #6
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    merci mais ce ne serai pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT IF(email is null, 0, 1) is_email
    ......
    Je demande car je n'ai jamais fais de if dans les requêtes

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par gtraxx Voir le message
    merci mais ce ne serai pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT IF(email is null, 0, 1) is_email
    ......
    Ca dépend (ça dépasse), si tu veux tes enregistrements SANS email, en premier, alors oui.

    Par contre, si tu veux tes enregistrements AVEC email en premier, non.



    DBRep

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/09/2010, 13h07
  2. Requête pour trouver les enregistrements manquants
    Par Bes74 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/07/2009, 17h57
  3. [MySQL] Requête pour récupérer les 5 derniers enregistrement dans l'ordre croissant
    Par Jonathan.b dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/01/2008, 10h50
  4. Requête pour obtenir les numéros d'enregistrements
    Par The_Super_Steph dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 16/05/2007, 09h39
  5. Réponses: 3
    Dernier message: 28/10/2005, 15h03

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