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

Langage SQL Discussion :

Trouver le suivant


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Points : 25
    Points
    25
    Par défaut Trouver le suivant
    bonjour

    j'ai une table qui contient des données de morceaux de musique que je trie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `webradio_fichiers` ORDER BY `path` ASC
    Nom : Capture d'écran 2023-11-26 133531.png
Affichages : 139
Taille : 109,7 Ko

    je souhaite faire une requete pour me donner le path suivant dans l'ordre de tri ci dessus (ORDER BY `path` ASC) pour path=".%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/15%20-%20What%20A%20Wonderful%20World.mp3" (qui correspond à la ligne ID=58) Le résultat devrait donc donner la ligne avec ID=46

    avec une subtilité: si le resultat est nul me prendre la première ligne de la requete du haut

    si besoin voici ma 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
    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
    75
    76
    77
    78
    79
    80
    81
    CREATE TABLE `webradio_fichiers` (
      `id` int(11) NOT NULL,
      `path` varchar(512) NOT NULL,
      `dossier` varchar(255) NOT NULL,
      `fichier` varchar(255) NOT NULL,
      `titre` varchar(100) NOT NULL,
      `artiste` varchar(100) NOT NULL,
      `album` varchar(100) NOT NULL,
      `annee` int(10) NOT NULL,
      `commentaire` varchar(100) NOT NULL,
      `genre` varchar(100) NOT NULL,
      `piste` int(10) NOT NULL,
      `duree` int(10) NOT NULL,
      `duree2` varchar(20) NOT NULL,
      `coupe` int(11) NOT NULL,
      `nbre` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
     
    --
    -- Déchargement des données de la table `webradio_fichiers`
    --
     
    INSERT INTO `webradio_fichiers` (`id`, `path`, `dossier`, `fichier`, `titre`, `artiste`, `album`, `annee`, `commentaire`, `genre`, `piste`, `duree`, `duree2`, `coupe`, `nbre`) VALUES
    (1, '.%2Ffichiers_audio%2Fsingle/Ain%27t%20No%20Sunshine.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (2, '.%2Ffichiers_audio%2Fsingle/Boyfriend.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (3, '.%2Ffichiers_audio%2Fsingle/Breakfast.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (4, '.%2Ffichiers_audio%2Fsingle/City%20of%20Stars.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (5, '.%2Ffichiers_audio%2Fsingle/Comptine%20d%27un%20autre%20%C3%A9t%C3%A9%2C%20l%27apr%C3%A8s-midi.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (6, '.%2Ffichiers_audio%2Fsingle/Cover%20Me%20In%20Sunshine.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (7, '.%2Ffichiers_audio%2Fsingle/DESPECH%C3%81.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (8, '.%2Ffichiers_audio%2Fsingle/Des%20sauvages.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (9, '.%2Ffichiers_audio%2Fsingle/Et%20dans%20150%20Ans.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (10, '.%2Ffichiers_audio%2Fsingle/Hakuna%20Matata.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (11, '.%2Ffichiers_audio%2Fsingle/Hit%20the%20Road%20Jack.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (12, '.%2Ffichiers_audio%2Fsingle/I%20Ain%27t%20Worried.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (13, '.%2Ffichiers_audio%2Fsingle/I%27ve%20never%20been%20there.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (14, '.%2Ffichiers_audio%2Fsingle/Il%20suffirait%20de%20presque%20rien%20%28Isabelle%20Boulay%29.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (15, '.%2Ffichiers_audio%2Fsingle/Il%20suffirait%20de%20presque%20rien.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (16, '.%2Ffichiers_audio%2Fsingle/J%27aime%20les%20gars.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (17, '.%2Ffichiers_audio%2Fsingle/J%27veux%20du%20soleil.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (18, '.%2Ffichiers_audio%2Fsingle/L%27Operap.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (19, '.%2Ffichiers_audio%2Fsingle/La%20valse%20d%27Am%C3%A9lie%20%28version%20orchestre%29.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (20, '.%2Ffichiers_audio%2Fsingle/La%20valse%20d%27Am%C3%A9lie%202.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (21, '.%2Ffichiers_audio%2Fsingle/Laisse%20aller.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (22, '.%2Ffichiers_audio%2Fsingle/Le%20temps%20ne%20fait%20rien%20%C3%A0%20l%27affaire.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (23, '.%2Ffichiers_audio%2Fsingle/Les%20limites.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (24, '.%2Ffichiers_audio%2Fsingle/Ma%20Libert%C3%A9.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (25, '.%2Ffichiers_audio%2Fsingle/Maniac.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (26, '.%2Ffichiers_audio%2Fsingle/Pas%20assez%20de%20toi.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (27, '.%2Ffichiers_audio%2Fsingle/Respect.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (28, '.%2Ffichiers_audio%2Fsingle/Soledad.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (29, '.%2Ffichiers_audio%2Fsingle/Stay.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (30, '.%2Ffichiers_audio%2Fsingle/Stayin%27%20Alive.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (31, '.%2Ffichiers_audio%2Fsingle/Supercalifragilistic.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (32, '.%2Ffichiers_audio%2Fsingle/Sweet%20Dreams%20Seven%20Nation%20Army%20Mashup.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (33, '.%2Ffichiers_audio%2Fsingle/The%20Diva%20Dance.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (34, '.%2Ffichiers_audio%2Fsingle/Theme%20The%20Pink%20Panther.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (35, '.%2Ffichiers_audio%2Fsingle/Un%20homme.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (36, '.%2Ffichiers_audio%2Fsingle/Une%20chanson%20douce.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (37, '.%2Ffichiers_audio%2Fsingle/Une%20petite%20fille.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (38, '.%2Ffichiers_audio%2Fsingle/Une%20%C3%A2me%20de%20po%C3%A8te.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (39, '.%2Ffichiers_audio%2Fsingle/Wellerman.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (40, '.%2Ffichiers_audio%2Fsingle/Where%20are%20you%20now.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (41, '.%2Ffichiers_audio%2Fsingle/Yesterday.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (42, '.%2Ffichiers_audio%2Fsingle/theme%20Game%20of%20Thrones.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (43, '.%2Ffichiers_audio%2Fsingle/theme%20Interstellar.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (44, '.%2Ffichiers_audio%2Fsingle/theme%20Twin%20Peaks.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (45, '.%2Ffichiers_audio%2Fsingle/theme%20Westworld.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (46, '.%2Ffichiers_audio%2Fsingle/%C3%A7a%20balance%20pas%20mal%20%C3%A0%20Paris.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (47, '.%2Ffichiers_audio%2Fsingle/Ton%20visage.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (48, '.%2Ffichiers_audio%2Fsingle/Inspecteur%20Gadget.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (49, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/01%20-%20Downtown%20%28Downtempo%29.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (50, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/01%20-%20J%27aime%20les%20gars.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (51, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/01%20-%20Over%20the%20Rainbow.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (52, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/01%20-%20Somewhere%20Only%20We%20Know.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (53, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/01%20-%20Sweet%20Dreams%20Seven%20Nation%20Army%20Mashup.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (54, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/02%20-%20Allez%20leur%20dire.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (55, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/03%20-%20Cannonball.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (56, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/03%20-%20Comptine%20d%27un%20autre%20%C3%A9t%C3%A9%2C%20l%27apr%C3%A8s-midi.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (57, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/11%20-%20The%20Sound%20of%20Silence.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0),
    (58, '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/15%20-%20What%20A%20Wonderful%20World.mp3', '', '', '', '', '', 0, '', '', 0, 0, '', 0, 0);
    Votre aide est la bienvenue. Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 217
    Points
    8 217
    Billets dans le blog
    17
    Par défaut
    je souhaite faire une requete pour me donner le path suivant dans l'ordre de tri ci dessus (ORDER BY `path` ASC) pour path=".%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/15%20-%20What%20A%20Wonderful%20World.mp3" (qui correspond à la ligne ID=58) Le résultat devrait donc donner la ligne avec ID=46
    Je comprends qu'à partir du path d'une ligne donnée, tu veux la ligne suivante selon l'ordre de tri ascendant sur la colonne path, à défaut la première ligne toujours selon ce même ordre de tri.

    La requête serait :

    SET @path = '.%2Ffichiers_audio%2Fmusiques%20achet%C3%A9es/15%20-%20What%20A%20Wonderful%20World.mp3';
    -- Test 1 => ID 46 OK
    
    SET @path = '.%2Ffichiers_audio%2Fsingle/Yesterday.mp3';
    -- Test 2 => ID 49 OK
    
    SELECT ALL *
    FROM webradio_fichiers
    WHERE id = COALESCE((
    	SELECT ALL id
    	FROM webradio_fichiers
    	WHERE path > @path
    	ORDER BY path ASC
    	LIMIT 1
    ), (
    	SELECT ALL id
    	FROM webradio_fichiers
    	ORDER BY path ASC
    	LIMIT 1
    ))
    ;
    La paramètre @path ne me plaît pas particulièrement (pas de contrainte d'unicité)
    => Il faut travailler sur les ID et déclarer ta colonne id en temps que clef primaire


    ----
    Par ailleurs, tu stockes des chemins codés pour du HTTP
    => Il faut stocker des données agnostiques de tout protocole/format, fait un rawurldecode() (ou équivalent) à l'insertion
    => Puis fait un rawurlencode() (ou équivalent) à l'utilisation HTTP/HTML
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Attention à ne pas utiliser SELECT * dans un livrable.

    Voir ICI les explications à ce sujet

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 34
    Points : 25
    Points
    25
    Par défaut
    bonjour et merci à vous deux pour votre aide

    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
    $requete1 = "SELECT ALL path
    FROM webradio_fichiers
    WHERE id = COALESCE((
    	SELECT ALL id
    	FROM webradio_fichiers
    	WHERE path > '".$sauf."'
    	ORDER BY path ASC
    	LIMIT 1
    ), (
    	SELECT ALL id
    	FROM webradio_fichiers
    	ORDER BY path ASC
    	LIMIT 1
    ))
    ;";
    j'ai modifié le code comme ci-dessus. Il marche nickel (encore merci)

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

Discussions similaires

  1. [XL-2019] Trouver Dates suivant le jour choisi pour une période donnée vba
    Par thespeedy20 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/10/2021, 08h54
  2. trouver fichier suivant ou précédent
    Par steph_1 dans le forum C
    Réponses: 2
    Dernier message: 15/10/2013, 11h27
  3. trouver un max suivant criteres (bdmax ou autres?)
    Par delirium dans le forum Excel
    Réponses: 6
    Dernier message: 03/11/2007, 15h51
  4. Trouver la lettre suivante?! A...B..C
    Par ozzmax dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2006, 17h59

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