Requête sql afficher des données

Résolu
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
A voir également:

7 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
0
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Ce n'est pas un exercice, c'est un problème que je veux le résolu
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour

Intéresse-toi aux jointures.
0
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Regarde par exemple, comment fonctionne la jointure left join
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Il 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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci, mais dsl je viens pas à comprendre le problème, vous pouvez me corriger la requête s.v.p ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
SGBD Mysql et projet sur PHP,
J'ai fais une recherche sur les jointures mais elle est compliqué que mon simple travail
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Compliqué ??
Pourtant, ça me semble assez simple à comprendre.. https://sql.sh/cours/jointures/left-join
Et un cours sur les jointues..et les alias : https://joaomarcuraa.medium.com/sql-joins-and-aliases-1965fd2423ca
0
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Merci, j'ai lu tout ça, mais je ne trouve pas mon exemple
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Tu 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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai fais ça comme tu m'a dit et ne marche pas
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Avant que je met les alias, j'ai testé ce code et il m'affiche une erreur de requête
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et c'est quoi l'erreur au juste ? ( par ce que .. nous donner cette information aiderait fortement à sa résolution.. )
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
ç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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Pour 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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
erreur aussi
0
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
la 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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Tu 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
okbabb Messages postés 57 Date d'inscription   Statut Membre Dernière intervention  
 
Merci bien mon ami, ça marche très bien :D
0