[mysql] requete basique
Résolu
crazyiop
-
Ssylvainsab Messages postés 2884 Date d'inscription Statut Modérateur Dernière intervention -
Ssylvainsab Messages postés 2884 Date d'inscription Statut Modérateur Dernière intervention -
bonjour ,je debute en php/mysql et je n'arrive pas a comprendre les jointure mysql te ce malgre plusieur exemple trouver sur le web (pas forcement toujour clair pour un neophyte)
mon probleme:
jai deux table :
message ayant un champs #envoyeur et texte
une table user ayant un champs id (repris dans #envoyeur) et un champs pseudo.
je voudrai pouvoir avec une requete recuperer le texte et le pseudo qui correspond a l'user ayant pour id #envoyeur...
mon probleme:
jai deux table :
message ayant un champs #envoyeur et texte
une table user ayant un champs id (repris dans #envoyeur) et un champs pseudo.
je voudrai pouvoir avec une requete recuperer le texte et le pseudo qui correspond a l'user ayant pour id #envoyeur...
A voir également:
- [mysql] requete basique
- Mysql community server - Télécharger - Bases de données
- Mysql error 2002 ✓ - Forum Linux / Unix
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Erreur de requete facebook - Forum Facebook
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
6 réponses
Salut.
Pour les jointures SQL, je ne maitrise que le LEFT JOIN.
Je pense que dans ton cas ceci conviendra :
Il faut que tous les entrées de envoyeur soient les mêmes que celles de pseudo.
Si ca ne marche pas, est-ce que tu peux détailler plus la structure de tes tables SQL ?
De plus, j'ai l'impression que tu utilises une liaison textuelle.
Il vaut mieux utiliser une liaison numérique ;-)
a plis
Pour les jointures SQL, je ne maitrise que le LEFT JOIN.
Je pense que dans ton cas ceci conviendra :
SELECT message.envoyeur, message.texte user.id, user.pseudo FROM message LEFT JOIN user ON message.envoyeur=user.pseudo
Il faut que tous les entrées de envoyeur soient les mêmes que celles de pseudo.
Si ca ne marche pas, est-ce que tu peux détailler plus la structure de tes tables SQL ?
De plus, j'ai l'impression que tu utilises une liaison textuelle.
Il vaut mieux utiliser une liaison numérique ;-)
a plis
euh ben sa me sort tous les enregistrement de message avec 'NULL' dans les champs id et pseudo (sur phpmyadmin)...
alors je recapitule j'ai 2 table
message(#envoyeur,#receveur,texte)
user(id,pseudo,...et dautre inutile)
pour la liaison je connai pas c'est quoi textuelle / numerique
mais les champs id receveur et envoyeur sont de type int
je vais etre concret :
------------------| | ---------------
user | | message
------------------| | --------------
id | pseudo | | envoyeur | receveur|texte
----------------- | | -----------------------
1 | jean pierre | | 1 | 2 | salut ! tu vas bien ?
2 | arthur | | 2 | 1 | oui
... | | 2 | 1 | et toi ?
-----------------| |---------------------------------------
voila je voudrai une requete qui me permette quand par exemple jean est connecter de voir :
message de arthur :
oui
--------------------
message de arhur :
et toi ?
---------------------
...
alors je recapitule j'ai 2 table
message(#envoyeur,#receveur,texte)
user(id,pseudo,...et dautre inutile)
pour la liaison je connai pas c'est quoi textuelle / numerique
mais les champs id receveur et envoyeur sont de type int
je vais etre concret :
------------------| | ---------------
user | | message
------------------| | --------------
id | pseudo | | envoyeur | receveur|texte
----------------- | | -----------------------
1 | jean pierre | | 1 | 2 | salut ! tu vas bien ?
2 | arthur | | 2 | 1 | oui
... | | 2 | 1 | et toi ?
-----------------| |---------------------------------------
voila je voudrai une requete qui me permette quand par exemple jean est connecter de voir :
message de arthur :
oui
--------------------
message de arhur :
et toi ?
---------------------
...
merde ma mise en page ..
voila
------------------|
user |
------------------|
id | pseudo |
----------------- |
1 | jean pierre |
2 | arthur |
... |
-----------------|
| ---------------
| message
| --------------
| envoyeur | receveur|texte
| -----------------------
| 1 | 2 | salut ! tu vas bien ?
| 2 | 1 | oui
| 2 | 1 | et toi ?
|---------------------------------------
voila
------------------|
user |
------------------|
id | pseudo |
----------------- |
1 | jean pierre |
2 | arthur |
... |
-----------------|
| ---------------
| message
| --------------
| envoyeur | receveur|texte
| -----------------------
| 1 | 2 | salut ! tu vas bien ?
| 2 | 1 | oui
| 2 | 1 | et toi ?
|---------------------------------------
C'est normal que ta requête retourne NULL, vu que les champs envoyeur et pseudo ne contiennent pas la même chose.
Essaye :
Le différence textuelle/numérique est simple :
quand un champ est de type text, varchar.. c'est du texte, et quand un champ est de type int, smallint... c'est un numérique.
Une liaison numérique, c'est donc une jointure avec deux champs de type int, smallint...
Essaye :
|-----------------| |------------------------------------------- |user | |message |-----------------| |------------------------------------------- |id | pseudo | |envoyeur |receveur |texte |-----------------| |------------------------------------------- |1 | jean pierre | |1 |2 |salut ! tu vas bien ? |2 | arthur | |2 |1 |oui |... | |2 |1 |et toi ? |-----------------| |------------------------------------------- $codeSQLrequete=' SELECT message.envoyeur, message.receveur, message.texte, user.id, user.pseudo FROM message LEFT JOIN user ON message.envoyeur=user.id'; $RQmessages=mysql_query($codeSQLrequete)or die(mysql_error()); while($donnesArray=mysql_fetch_assoc($RQmessages)) { echo'<h3>Message de ',$donnesArray['pseudo'],' :</h3>',"\n\t", '<p>',$donnesArray['texte'],'</p>',"\n\n"; }
Le différence textuelle/numérique est simple :
quand un champ est de type text, varchar.. c'est du texte, et quand un champ est de type int, smallint... c'est un numérique.
Une liaison numérique, c'est donc une jointure avec deux champs de type int, smallint...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question