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

Requêtes MySQL Discussion :

Requetes SQL avec plusieurs ORDER BY


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 5
    Par défaut Requetes SQL avec plusieurs ORDER BY
    Bonjour,

    je vous demande de l'aide car je galère un peu avec une requête SQL. Je m'explique.

    J'ai une table qui répertorie des annonces, avec entre autres, comme champs : departement, ville et date_depot.

    La recherche s'effectue par la ville. Mais la page de résultats affichent toutes les annonces situées dans le département de cette ville (j'espère que c'est clair !)

    Je voudrais afficher d'abord les annonces dans cette ville, puis celle des autres villes du département. Le tout trié par date_depot.

    exemple :

    table qui comprend :

    ID, ville, departement, date_depot

    1, Draguigan, 83, 5/01/2018

    2, Hyères, 83, 11/01/2018

    3, Draguigan, 83, 8/01/2018

    4, Toulon, 83, 14/01/2018

    5, Brignoles, 83, 12/01/2018

    6, Marseille, 13, 15/01/2018

    Je voudrais que le résultats d'une requête sur la ville de Draguignan m'affiche, dans l'ordre :

    - 3 (car Draguignan et date_depot > la 1)

    - 1 (toujours Draguignan et date_depot < la 1)

    - 4 (car plus de champ ville Draguignan, mais dans le même département date_depot la plus récente)

    - 5 (date_depot > la 2)

    - 2

    Pas la 6 car pas dans le même département que Draguignan.

    J'ai fait cette requête :

    SELECT * FROM annonces WHERE departement="'.$departement.'" ORDER BY ville="'.$ville.'" AND date_depot DESC
    Mais cela me trie bien les annonces de la ville concernée, puis les autres du département ensuite. Mais cela ne prend pas en compte la date_depot DESC ...

    Cela me donne ce résultat :

    - 1

    - 3

    - 2

    - 5

    - 4

    Si quelqu'un peut m'aider, ce serait vraiment sympa. Merci beaucoup.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Ajoutez un CASE dans votre ORDER BY

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut à tous.

    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
    67
    68
    69
    70
    71
    72
    73
    74
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`           integer unsigned  NOT NULL auto_increment primary key,
      `ville`        varchar(255)      NOT NULL,
      `departement`  smallint          NOT NULL,
      `date_depot`   date              NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `test` (`ville`,`departement`,`date_depot`) VALUES
      ('Draguignan', 83, '2018-01-05'),
      ('Hyères',     83, '2018-01-11'),
      ('Draguignan', 83, '2018-01-08'),
      ('Toulon',     83, '2018-01-14'),
      ('Brignoles',  83, '2018-01-12'),
      ('Marseille',  13, '2018-01-15')
    --------------
     
    --------------
    select * from `test` order by id
    --------------
     
    +----+------------+-------------+------------+
    | id | ville      | departement | date_depot |
    +----+------------+-------------+------------+
    |  1 | Draguignan |          83 | 2018-01-05 |
    |  2 | Hyères     |          83 | 2018-01-11 |
    |  3 | Draguignan |          83 | 2018-01-08 |
    |  4 | Toulon     |          83 | 2018-01-14 |
    |  5 | Brignoles  |          83 | 2018-01-12 |
    |  6 | Marseille  |          13 | 2018-01-15 |
    +----+------------+-------------+------------+
    --------------
    select    *
        from  `test`
       where  departement = 83
    order by  field(ville,'Draguignan') desc, date_depot desc
    --------------
     
    +----+------------+-------------+------------+
    | id | ville      | departement | date_depot |
    +----+------------+-------------+------------+
    |  3 | Draguignan |          83 | 2018-01-08 |
    |  1 | Draguignan |          83 | 2018-01-05 |
    |  4 | Toulon     |          83 | 2018-01-14 |
    |  5 | Brignoles  |          83 | 2018-01-12 |
    |  2 | Hyères     |          83 | 2018-01-11 |
    +----+------------+-------------+------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 5
    Par défaut
    Merci beaucoup !
    La virgule !!!!

    faut que je relise les cours de SQL. Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/11/2018, 12h32
  2. Réponses: 0
    Dernier message: 02/03/2011, 23h26
  3. Requete SQL avec plusieurs variables?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2010, 15h56
  4. Requete SQL avec plusieurs code
    Par r0nsync dans le forum Développement
    Réponses: 6
    Dernier message: 11/08/2010, 13h46
  5. Requete SQL avec plusieurs jointures
    Par Esil2008 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2009, 12h51

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