Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SQL] Forcer une requete à commencer par un résultat

Puis suivre le court normal

    19 avril 2011 à 0:15:48

    Bonjour,

    J'ai une requête très simple du style :

    $strNom='select * from mp3_infos where id_profil='.$idF.' order by position asc ';

    Seulement voilà je voudrais la faire commencer par un id spécifique puis ensuite lui faire respecter cet ordre,

    D'où ma question est-ce possible en 1 seule requête ?
    • Partager sur Facebook
    • Partager sur Twitter
      19 avril 2011 à 0:46:09

      tu te casserais moins la tête en fesant 2 requêtes de toute façon ;)

      Et si tu ne veux pas qu'il se retrouve dans la liste après tu mets en mémoire :

      select * FROM mp3_infos WHERE id_profil=:id => tu récup celui qui doit venir devant.
      tu l'affiches, tu fais ce que tu veux. Ensuite tu retiens dans une variable $pas_afficher = $don['id_mp3_infos'];

      Tu fais ta deuxième requête
      SELECT * FROM mp3_infos ORDER BY position ASC
      tu fais

      if($don != $pas_afficher)
      {
      on affiche
      }
      • Partager sur Facebook
      • Partager sur Twitter
        19 avril 2011 à 0:56:31

        Oui, mais il est franchement mieux de le faire en une, dans mon cas, donc les pros SQL sont les bienvenus..
        • Partager sur Facebook
        • Partager sur Twitter
          19 avril 2011 à 9:25:58

          Citation : Niiu

          Oui, mais il est franchement mieux de le faire en une, dans mon cas, donc les pros SQL sont les bienvenus..


          Dans ce cas, peut-être aurait-il été plus judicieux de poster dans le forum "Bases de données". ;)
          Je déplace le sujet. Bonne journée. :)
          • Partager sur Facebook
          • Partager sur Twitter
            19 avril 2011 à 9:57:31

            Salut,

            une requête dans ce genre devrai fonctionner :)

            SELECT * FROM mp3_infos WHERE id_profil=:id
            UNION ALL
            SELECT * FROM mp3_infos WHERE id_profil!=:id ORDER BY position ASC
            
            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2011 à 11:19:47

              Une seule passe sur la table:
              select *
              from mp3_infos
              order by case id_profil
                          when :id then 0
                          else 1
                        end,
                        position
              
              • Partager sur Facebook
              • Partager sur Twitter
                26 avril 2011 à 15:45:58

                Citation : pythonneries

                Une seule passe sur la table:

                select *
                from mp3_infos
                order by case id_profil
                            when :id then 0
                            else 1
                          end,
                          position
                


                Salut

                C'est celle la, la solution ?
                • Partager sur Facebook
                • Partager sur Twitter

                Android est SKYNET !

                  26 avril 2011 à 15:47:51

                  Sérieux spider17, t'essayerais pas ?? Sans compter que tu ferais mieux de répondre dans ton post à toi...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [SQL] Forcer une requete à commencer par un résultat

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown