Partage
  • Partager sur Facebook
  • Partager sur Twitter

requêtes imbriquées

Sujet résolu
    10 juin 2011 à 14:14:48

    bonjour,
    j'exécute la requête suivante pour faire une recherche non pas à partir d'une table, mais des résultats d'une requête.
    SELECT * FROM (SELECT désignation_article, sum( Stock_mag ) as quantité
    FROM  (
    
    SELECT désignation_article, Stock_mag
    FROM entré_gne
    UNION ALL
    SELECT `Désignation` , - quantité_retirée
    FROM sorties_gne
    )_
    GROUP BY désignation_article ) WHERE désignation_article like '%$requete%'
    


    le problème, c'est que cela me retourne l'erreur suivante que je n'arrive pas à corriger:

    Citation

    Every derived table must have its own alias


    pouvez-vous m'aider s'il vous plaît ?
    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2011 à 14:17:47

      ligne 10 ajoute un alias après la )
      *Un alias c'est un libellé genre BLA, ZOB, TRUC ... bref un truc qui contient pas des caractères chelous ...

      Tracker.
      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2011 à 14:31:35

        merci ça marche parfaitement :D
        • Partager sur Facebook
        • Partager sur Twitter
          16 juin 2011 à 10:20:59

          Petit up sur le sujet qui m'aide pas mal...
          Est-ce que vous voyez où j'ai un soucis...?
          (Info : je suis plutôt du genre Noob)

          $requete2=$db->query('SELECT user AS nom
          	FROM (SELECT * 
          		FROM ma_base
          		DISTINCT (ih_id)
          		ORDER BY date DESC)
          	WHERE proj = \'' . $_SESSION['proj'] . '\'
          	');
          


          • Partager sur Facebook
          • Partager sur Twitter
            16 juin 2011 à 10:21:36

            Oui, tu devrait revoir l'utilsation du mot DISTINCT
            • Partager sur Facebook
            • Partager sur Twitter
              16 juin 2011 à 10:28:19

              Il me semble aussi... mais même comme ca :

              $requete2=$db->query('SELECT user AS nom
              	FROM (SELECT * (DISTINCT ih_id)
              		FROM ma_base
              		ORDER BY date DESC)
              	WHERE proj = \'' . $_SESSION['proj'] . '\'
              	');
              


              ca ne fonctionne pas...
              • Partager sur Facebook
              • Partager sur Twitter
                16 juin 2011 à 10:28:59

                Essaye encore... Mais c'est (un peu) mieux.
                • Partager sur Facebook
                • Partager sur Twitter
                  16 juin 2011 à 10:46:02

                  Manque aussi un alias de table entre ) et where [ligne 4-5]
                  Sinon tu cherches à faire quoi en mélangeant * et distinct ih_id, et réfléchis avant de répondre ??

                  Tracker.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juin 2011 à 10:49:37

                    Avec ca :

                    $requete2=$db->query('SELECT user AS nom
                    	FROM (SELECT DISTINCT (ih_id), date, suppr
                    		FROM ma_base
                    		ORDER BY date DESC)
                    	WHERE proj = \'' . $_SESSION['proj'] . '\'
                    	');
                    


                    j'ai cette erreur :
                    "Fatal error: Call to a member function CloseCursor() on a non-object in C:\wamp\www\..."

                    Et si j'enlève mon "$requete2->CloseCursor();" tout va bien...

                    Et en traitant ma requete grâce à :

                    $donnees = $requete2->fetch();
                    echo $donnees['nom'];
                    $nom_user = $donnees['nom'];
                    


                    J'ai cette erreur :
                    "Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\..."




                    Concernant l'allias, j'ai pas trop compris ce que c'est, je me renseigne dessus...
                    Pour ce qui est de réfléchir, je fais au mieux...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 juin 2011 à 10:53:19

                      tu n'as pas répondu à sa question principale, qui était aussi la plus intéressante : T'essaye de faire QUOI en fait ??

                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 juin 2011 à 10:58:42

                        par exemple :

                        J'ai une colonne A => contient des noms de Pays
                        J'ai une colonne B => contient le nom d'une ville
                        J'ai une colonne C => contient la population de la ville

                        Ensuite, chaque mise à jour de la population on crée une nouvelle ligne dans cette bdd (elle aura donc le même nom de pays, et le même nom de ville)
                        On a aussi une colonne date, et une "id" en auto-incrément.

                        Moi je souhaiterai afficher, par pays, l'id de la ville ayant la plus faible population, mais en tenant compte des mises à jours (et prendre la plus fraiche).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 juin 2011 à 11:01:47

                          Heu... Et t'as une raison de garder les anciennes valeurs ??
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 juin 2011 à 11:03:56

                            oui.


                            EDIT : Est-ce que c'est ca qu'il faut faire pour l'alias? (l3 et l5)
                            $requete2=$db->query('SELECT MIN population AS pop
                            	FROM (SELECT DISTINCT (nom_ville), date, etc
                            		FROM ma_base a
                            		ORDER BY date DESC)
                            	WHERE a.country = \'' . $_SESSION['pays'] . '\'
                            	');
                            




                            EDIT II :
                            bon, j'ai trouvé un peu d'infos sur le distinct et j'ai rectifié un truc sur min... le soucis c'est "juste" l'alias. mais comme j'y connais rien dessus, je rame et cherche des docs.
                            $requete2=$db->query('SELECT MIN(population) AS pop
                            	FROM (SELECT DISTINCT nom_ville
                            		FROM ma_base a
                            		ORDER BY date DESC)
                            	WHERE a.country = \'' . $_SESSION['pays'] . '\'
                            	');
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 juin 2011 à 2:17:16

                              Un alias c'est simplement une chaîne identifiant de façon unique (dans sa portée) une colonne, une table, etc...

                              Tracker.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 juin 2011 à 15:00:28

                                hum...
                                je te remercie. ca me semble un peu flou encore, mais j'ai saisi "l'esprit" d'un alias.
                                Et j'ai réussi à sortir la bonne requête, tout fonctionne.
                                @ bientôt :D
                                • Partager sur Facebook
                                • Partager sur Twitter

                                requêtes imbriquées

                                × 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