Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requête SQL

Avez vous une idée?

    8 mai 2007 à 23:35:31

    Bonsoir,

    J'ai une idée en tête, mais je ne parviens pas à former une requête SQL qui la mettrai en forme. Je m'explique :
    Je voudrai récupérer dans une BDD 10 champs, pour plusieurs id de lignes. Exple : J'ai les 10 champs chp1, chp2, chp3, chp4, chp5, etc. et un 11eme champs est "id". Or je voudrai récupérer en UNE requête les 10 champs qui corréspondent à mes différents id (mettons une douzaine d'id différents, donc 120 valeurs de champs différents).

    Avez-vous compris? Si oui, est-il possible de le faire? et le dans ce cas, quelle serai la requête SQL à utiliser?
    Sinon, quelle methode me conseillez vous, sachant que je dois limiter au maximum le nombre de requêtes sur le serveur MySQL.

    Merci d'avance,
    Delf'
    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2007 à 23:40:39

      Je comprends pas trop la question.

      SELECT id, chp2, chp3, chp4, chp5, chp6, chp7, chp8, chp9, chp10
      FROM table

      C'est ça que tu veux faire???
      • Partager sur Facebook
      • Partager sur Twitter
        9 mai 2007 à 13:05:16

        Ben oui, sauf que cette table contient un millier d'entrées et que seulement quelques une m'interessent. Or je pourrai facilement avec un for() faire autant de requete que j'ai d'entrée, mais j'ai une douzaine d'entrée à récupérer (12 entrées x 10 valeurs de champs), donc ca me fait 12 requêtes SQL, ce qui fait beaucoup... Je me demandais s'il était possible, en une requête de récupérer les 10 champs de chacune des douze entrées.
        • Partager sur Facebook
        • Partager sur Twitter
          9 mai 2007 à 13:15:18

          SELECT id, chp2, chp3, chp4, chp5, chp6, chp7, chp8, chp9, chp10
          FROM table Where "condition"

          Et tu remplace "condition" par ta condition, par exemple Where ID<=12 (les 12 premieres ID)...
          • Partager sur Facebook
          • Partager sur Twitter
            9 mai 2007 à 13:21:06

            Sinon tu devrais pouvoir utiliser LIMIT dans ta requête.

            SELECT id, chp2, chp3, chp4, chp5, chp6, chp7, chp8, chp9, chp10
            FROM table
            LIMIT 0, 10

            Récupère les 10 premieres lignes en partant de la première ligne (0 + 1)
            • Partager sur Facebook
            • Partager sur Twitter
              9 mai 2007 à 13:31:49

              OU encore, si tu veux avoir les 12 premiers selon un classement bien déterminés (par exemple seleon chp1)
              tu fais:
              SELECT id, chp1, chp2, chp3, chp4, chp5, chp6, chp7, chp8, chp9, chp10
              FROM table ORDER BY chp1
              LIMIT 0, 12
              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2007 à 13:58:02

                Si tu veux un nombre précis de lignes, utilise un IN :

                SELECT id,chp1,[...],chp10 FROM ta_table WHERE id IN (id1, id2, id3..., id12)

                N'utilise de LIMIT que pour dire "Je veux les x premiers". Si tu cherches certains champs précis, il faut un IN.
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2007 à 14:02:23

                  Voilà, la dernière est celle que je voulais... Merci donc à Veldryn, et bien sur à choubidouwa et Crazy Boy pour leur aide ;)

                  @+ tard,
                  Delf'
                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 mai 2007 à 18:15:09

                    Signale que ce problème est résolu
                    • Partager sur Facebook
                    • Partager sur Twitter
                      9 mai 2007 à 22:54:54

                      A vrai dire, c'est "presque" résolu, car j'ai l'impression que PHP va me chercher un colonne au lieu d'une entrée Oo voyez plutot :

                      Erreur : Unknown column '1769' in 'where clause'

                      Requête : mysql_query('SELECT `chp1`, `chp2`, `chp3`, (...), `chp10` FROM `ma_table` WHERE `entry` IN (`entry1`, `entry1`, `entry2`, `entry3`, (...), `entry12`)') or die(mysql_error());

                      Donc ca ne devrai pas être interpreté comme cela Oo ou alors c'est moi qui interprete mal l'erreur SQL...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 mai 2007 à 23:01:51

                        Les emplacements de tes quotes me semblent bizarre. D'ailleurs c'est les quotes ' qu'il faut utiliser et pas `.

                        Voici un code qui devrait marcher:


                        $result = mysql_query("SELECT chp1, chp2, chp3, (...), chp10 FROM ma_table WHERE entry IN ('entry1', 'entry1', 'entry2', 'entry3', (...), 'entry12')");

                        if (!$result) {
                            die(mysql_error());
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 mai 2007 à 11:12:00

                          Les `` servent à protéger des noms de champs ou de tables. Donc utilise des ' ' (Ou rien si c'est des nombres) :)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Requête SQL

                          × 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