Requête sql afficher des données

Résolu
Bonjour,

7 réponses

  1. Merci bien mon ami, ça marche très bien :D
    0
    1. non, j'ai enlevé l'ordre by et le problème existe encore
      l'erreur est:
      Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\Serveur\xampp\htdocs\projet\tableau.php on line 103

      et je ne sais pas comment je mettre les alias pour que les output affiche les nom des structures (lieu_travail et affectation) des colonnes ciblé
      0
      1. Modérateur
        Ah mais tu parles d'un message d'erreur PHP .... ça on s'en fou !
        Déjà.. par ce que ta question concerne la construction d'une requête SQL, qu'elle est postée dans le forum Base de données .. et qu'en plus.. je t'ai dit de tester tes requêtes DIRECTEMENT dans ta bdd avant de vouloir les utiliser dans du code.

        Sans oublier que ton code php est obsolète... mais ça je t'en parlerai plus tard quand tu auras enfin fait la requête pour laquelle tu nous demandé de l'aide...
        0
      2. Modérateur
        @jordane45Pour les alias .. tu n'as visiblement toujours pas pris le temps d'aller lire les liens que je t'ai donné.
        Tout y est expliqué ...
        Par exemple
        SELECT  T1.id as ID1,  T2.id as ID2 ...
        
        0
      3. @jordane45erreur aussi
        0
      4. @jordane45la chose est très simple, mais je connais pas comment le faire, voila un autre exemple,

        une table "utilisateurs" qui contient 4 colonnes: id, nom, pays_origine, pays_residence

        id nom pay_origine pays_residence
        1 michel 1 2
        2 celine 3 4

        et une autre table "pays" qui contient 2 colonnes: id_pays, nom_pays

        id_pays nom_pays
        1 france
        2 belgique
        3 espagne
        4 suisse

        je veux un tableau final comme ca: (output)

        nom pays_origine pays_residence
        michel france belgique
        celine espagne suisse

        quelle est la requete sql ? et merci d'avance
        0
      5. Modérateur
        @okbabbTu as une erreur car tu n'as pas utiliser l' alias de la table dans la partie SELECT ...
        T1.lieu....
        

        Et non pas
        personnes.lieu....
        


        A moins que tu n'aies pas bien écrit le nom de la colonne ? ( mais ne connaissant pas la structure exacte de ta bdd, difficile pour moi de le deviner à distance )
        0
    2. Avant que je met les alias, j'ai testé ce code et il m'affiche une erreur de requête
      0
      1. Modérateur
        Et c'est quoi l'erreur au juste ? ( par ce que .. nous donner cette information aiderait fortement à sa résolution.. )
        0
      2. Modérateur
        @jordane45ça ne serait pas une question d' ID ambiguë dans le order by ??
        Il faudrait le préfixer par l'alias de la table qui concerne ce champ .. T1.id par exemple.
        0
    3. J'ai fais ça comme tu m'a dit et ne marche pas
      0
      1. Modérateur
        1 - On ne poste pas des images... mais le code directement sur le forum en utilisant les balises de code !
        2 - Une requête SQL ça se teste AVANT directement dans la bdd ( en utilisant phpmyadmin par exemple )
        3 - Il va falloir mettre des ALIAS également dans la partie "SELECT" de ta requête pour pouvoir identifier les champs ( vu que tu as plusieurs fois les mêmes.. )

        NB: Explications concernant l'utilisation des balises de code à lire entièrement avant de revenir :
        https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

        .
        0
    4. Modérateur
      Déjà.. il faudrait nous indiquer quel SGBD tu utilises ...
      Mysql ? Access ? Oracle ? SqlServer ? PostgreSql ? Autre ??

      Ensuite, je t'ai dit de te renseigner sur les jointures de type LEFT JOIN et sur les ALIAS ... l'as tu fais ??
      0
      1. SGBD Mysql et projet sur PHP,
        J'ai fais une recherche sur les jointures mais elle est compliqué que mon simple travail
        0
      2. @jordane45Merci, j'ai lu tout ça, mais je ne trouve pas mon exemple
        0
      3. Modérateur
        @okbabbTu ne trouveras pas un exemple qui reprenne exactement ton besoin.. à toi de comprendre comment ça marche et l'appliquer...

        Commence par une première jointure entre tes deux tables , regarde ce que ça donne...
        puis ensuite, ajoutes une seconde jointure entre tes deux tables .. et voila .. le tour est joué..
        En gros
        SELECT * 
        FROM table1 T1
        LEFT JOIN table2 T2 ON T2.xx = T1.zz
        LEFT JOIN table2 T3 on T3.ww = T1.yy
        
        0
    5. Modérateur
      Bonjour

      Intéresse-toi aux jointures.
      0
      1. Cette requête ne marche pas:

        SELECT * FROM personnes, structures WHERE lieu_travail = id_structure AND affectation = id_structure

        Comment je résoudre le problème s.v.p ?
        0
      2. Modérateur
        @okbabbRegarde par exemple, comment fonctionne la jointure left join
        0
      3. Modérateur
        @jordane45Il te faudra aussi t'intéresser aux alias .. car tu dois faire deux fois la jointure sur ta table structures ( une pour chaque liaison avec ta table personnes )
        0
      4. @jordane45Merci, mais dsl je viens pas à comprendre le problème, vous pouvez me corriger la requête s.v.p ?
        0