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 :

order by et plusieurs colonnes


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut order by et plusieurs colonnes
    bonjour,

    j'ai une requête où le visiteur peut chercher un mot dans 5 colonnes. Ces colonnes sont de forme VARCHAR et peuvent être remplies, ou NULL, ou vides.
    je souhaite que les résultats affichés présentent d'abord les lignes où le mot cherché est présent dans une des 5 colonnes, puis les lignes où le mot n'apparait dans aucune des colonnes.

    je ne sais pas du tout comment construire mon ORDER BY (si c'est bien ca qu'il faut utiliser), est-ce que quelqu'un pourrait m'aider ?

    merci beaucoup
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Peut-on avoir un peu plus d'infos sur la requete car il y a quelque chose de pas clair dans la description que tu en fait.

    Tu parles d'un choix de recherche sur une des colones ( logiquement une clause where), mais tu veux trier le résultat avec les des lignes ou le mot n'apparait pas. Logiquement ces lignes ne seront pas présentes

    Pierre
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    merci de ton aide

    en fait il y a un autre champ qui entre en compte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     $sql = 'SELECT count(*) AS nb_res FROM guide, aide_st where guide.structure=aide_st.s_clef'; 
     
    if(isset($_SESSION['dmois'])&&($_SESSION['dmois'])!="#")
    {
    $sql .= ' AND (rythme!="se renseigner auprès de la structure" OR (mois1="'.$_SESSION['dmois'].'" AND annee1="'.$_SESSION['dannee'].'")  OR (mois2="'.$_SESSION['dmois'].'" AND annee2="'.$_SESSION['dannee'].'") OR (mois3="'.$_SESSION['dmois'].'" AND annee3="'.$_SESSION['dannee'].'")  OR (mois4="'.$_SESSION['dmois'].'" AND annee4="'.$_SESSION['dannee'].'")  OR (mois5="'.$_SESSION['dmois'].'" AND annee5="'.$_SESSION['dannee'].'"))'; 
    }
    ($_SESSION['dannee'] a été définie avant)

    c'est pour un agenda d'événements : soit il y a bien des dates précises liées à un événement (5 dates possibles par événement) soit il est possible d'indiquer dans la colonne "rythme" une fréquence (tous les 2ème mardi du mois" par ex).
    Si quelqu'un cherche ce qui se passe en décembre, je voudrais que ma les résultats présentent en prirorité les lignes pour lesquelles mois1 ou mois2 ou mois3 ou mois4 ou mois5 = 12 (décembre) puis les lignes pour lesquelles dans "rythme" il y a un commentaire du type "chaque mardi"

    J'espère que c'est pas trop embrouillé
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  4. #4
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Donc les evenements qui sont périodique, n'ont pas de données dans les colones moi ou annee,

    je ferais un truc comme ca ,

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... ORDER BY IF(mois1=NULL,1,0),IF(mois2=NULL,1,0),IF(mois3=NULL,1,0),IF(mois4=NULL,1,0),IF(mois5=NULL,1,0)
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  5. #5
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    c'est bien ca, si rythme est rempli, il n'y a pas de date précise, donc mois 1,2,3,4,5 sont vides.

    Par contre, je ne comprends pas la syntaxe de ta proposition et comment elle s'intégre dans la requête
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  6. #6
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Dans le order, rien ne t'empèche de faire tes tests pour ordonner suivant le résultat ce ceux-ci. Avec le IF on regarde si le champ est null alors on revnoie 0, sinon 1.
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  7. #7
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    ok je comprends, mais j'ai pas plutôt intérêt à faire le if avec la variable qui devrait être contenue plutôt qu'avec NULL ?

    ORDER BY IF(mois1="'.$_SESSION['dmois'].'",1,0) ?
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  8. #8
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Pas besoin, pusique les tu n'as que les moid qui t'interrese, tu veux juste savoir si c'est periode ou pas.

    Tiens , il me vient une idée du coup. Si un mois est renseigné, alors rythme vaut NULL,

    donc le order est plus court

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORDER BY IF(rythme IS NULL,0,1)

    A tester, bien entendu
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  9. #9
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    merci, j'y vois plus clair, en fait c'est peut être un ORDER BY rythme en mettant en premier les lignes où rythme est vide, ce qui sous entend qu'il y a une date qui colle
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  10. #10
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    bon, merci, en faisant la différence selon la colonne rythme ca marche.
    un peu l'impression de m'être cassé la tête pour rien "pourquoi faire simple quand on peut faire compliqué".

    Merci beaucoup pour ton aide
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

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

Discussions similaires

  1. ORDER BY sur plusieurs colonnes simultanément !
    Par Evocatii dans le forum Requêtes
    Réponses: 5
    Dernier message: 19/08/2009, 00h59
  2. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22
  3. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51
  4. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  5. order by sur plusieurs tables
    Par Mad_Max dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/12/2003, 12h17

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