Faire une liaison entre 2 tables MySQL.
freeman034
-
freeman034 -
freeman034 -
Salut à tous,
Bon voila je suis pas vraiment un novice en PHP je me débrouille assez bien mais là je planche sur un problème où j'ai vraiment du mal à trouver une solution, en fait j'ai fais une erreur que je ne peux pas corriger, c'est d'avoir mis des informations qui permettent de trier une requête SQL dans 2 tables différentes, donc je veux savoir si quelqu'un peut me coder les lignes pour faire la liaison entre les 2 tables (exemple : when $rang == 1 -> $nom = 2) des choses comme ça, je vous ai fais un bon p'tit résumé pour vous aider à comprendre, merci de votre aide.
Voici les tables résumées : http://p.bacquet.free.fr/tables.txt
Bon voila je suis pas vraiment un novice en PHP je me débrouille assez bien mais là je planche sur un problème où j'ai vraiment du mal à trouver une solution, en fait j'ai fais une erreur que je ne peux pas corriger, c'est d'avoir mis des informations qui permettent de trier une requête SQL dans 2 tables différentes, donc je veux savoir si quelqu'un peut me coder les lignes pour faire la liaison entre les 2 tables (exemple : when $rang == 1 -> $nom = 2) des choses comme ça, je vous ai fais un bon p'tit résumé pour vous aider à comprendre, merci de votre aide.
Voici les tables résumées : http://p.bacquet.free.fr/tables.txt
A voir également:
- Faire une liaison entre 2 tables MySQL.
- Supercopier 2 - Télécharger - Gestion de fichiers
- Comment faire une table des matières sur word - Guide
- Faire 2 colonnes sur word - Guide
- 2 ecran pc - Guide
- Mysql community download - Télécharger - Bases de données
16 réponses
Un type de TINYINT à BIGINT.
http://dev.mysql.com/doc/refman/5.0/fr/numeric-types.html
-> fin de la page
http://dev.mysql.com/doc/refman/5.0/fr/numeric-types.html
-> fin de la page
Salut,
Si tu débrouilles, regardes du coté des jointures de mysql, c'est le lot quotidien
de tout développeur utilsant une base de données => un petit lien :
http://dev.mysql.com/doc/refman/5.0/fr/select.html
Explique plus clairement les requètes que tu désires faire, je pas comprendre ;-)
A+, crabs
Si tu débrouilles, regardes du coté des jointures de mysql, c'est le lot quotidien
de tout développeur utilsant une base de données => un petit lien :
http://dev.mysql.com/doc/refman/5.0/fr/select.html
Explique plus clairement les requètes que tu désires faire, je pas comprendre ;-)
A+, crabs
Salut,
Tu peux aussi compléter la clause WHERE avec des AND
Exemple, la même requete mais seulement si l'url de rangs est rempli
Allez, une petite dernière, imaginons que tu es un code équipe dans
la table users (nom de champ team_id) et que tu désires obtenir le résultat
pour la team de code 8 :
A+, crabs
SELECT * FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade ORDER BY r.id DESC
Tu peux aussi compléter la clause WHERE avec des AND
Exemple, la même requete mais seulement si l'url de rangs est rempli
SELECT * FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade AND r.url <> '' ORDER BY r.id DESC
Allez, une petite dernière, imaginons que tu es un code équipe dans
la table users (nom de champ team_id) et que tu désires obtenir le résultat
pour la team de code 8 :
SELECT * FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade AND u.team_id = '8' ORDER BY r.id DESC
A+, crabs
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui pardon j'ai oublié de les donner :-P
$sql=mysql_query("SELECT rang, user FROM users."");
list($rang, $user) = mysql_fetch_array($sql);
$sql2=mysql_query("SELECT id, grade FROM rangs." ORDER BY id DESC");
list($id, $grade) = mysql_fetch_array($sql2);
rang = pfc, maj... (table users)
grade = pfc, maj... (table rangs)
id = 1, 2...
user = john, michael...
Idée : Sélectionner liste grades de la table rangs, ainsi que les grades assignés dans la table users, faire la laison entre les grades de users ($rang) et les grades triés numériquement de la table rangs ($grade), puis les trier grace à $id de la table rangs (de 1 à 13).
BUT : TRIER LES MEMBRES DANS UN TABLEAU DU GRADE LE PLUS ELEVE (1) AU GRADE LE MOINS ELEVE (13)
Merci pour votre aide à toutes et à tous
$sql=mysql_query("SELECT rang, user FROM users."");
list($rang, $user) = mysql_fetch_array($sql);
$sql2=mysql_query("SELECT id, grade FROM rangs." ORDER BY id DESC");
list($id, $grade) = mysql_fetch_array($sql2);
rang = pfc, maj... (table users)
grade = pfc, maj... (table rangs)
id = 1, 2...
user = john, michael...
Idée : Sélectionner liste grades de la table rangs, ainsi que les grades assignés dans la table users, faire la laison entre les grades de users ($rang) et les grades triés numériquement de la table rangs ($grade), puis les trier grace à $id de la table rangs (de 1 à 13).
BUT : TRIER LES MEMBRES DANS UN TABLEAU DU GRADE LE PLUS ELEVE (1) AU GRADE LE MOINS ELEVE (13)
Merci pour votre aide à toutes et à tous
Salut Crab,
Non je n'arrive pas à trouver la combinaison qui aille...
Je pense que la ligne de code précédente irait mieux :
J'ai bien lu sur le site de MySQL mais je comprends toujours pas... je te passe la ligne de code qui doit être officiellement incorporée tu peux me l'adapter stp car moi j'ai tjrs une erreur...
$sql2=mysql_query("SELECT pseudo, mail, icq, msn, aim, yim, rang, country, url, abrev FROM users WHERE niveau>1 AND team='$team' ORDER BY niveau DESC");
$nb_members = mysql_num_rows($sql2);
Merci infiniment, c'est urgent !
Non je n'arrive pas à trouver la combinaison qui aille...
Je pense que la ligne de code précédente irait mieux :
select machin, truc from rangs inner join users on (rangs.grade=users.rang) where rangs.grade='5' and users.user='toto'
J'ai bien lu sur le site de MySQL mais je comprends toujours pas... je te passe la ligne de code qui doit être officiellement incorporée tu peux me l'adapter stp car moi j'ai tjrs une erreur...
$sql2=mysql_query("SELECT pseudo, mail, icq, msn, aim, yim, rang, country, url, abrev FROM users WHERE niveau>1 AND team='$team' ORDER BY niveau DESC");
$nb_members = mysql_num_rows($sql2);
Merci infiniment, c'est urgent !
Salut Crabs,
Excuses-moi d'avoir écorché ton nom.
En fait voici la vraie ligne que je viens de faire mais visiblement elle marche pas, tu peux me la corriger stp ?
Excuses-moi d'avoir écorché ton nom.
En fait voici la vraie ligne que je viens de faire mais visiblement elle marche pas, tu peux me la corriger stp ?
$sql=mysql_query("SELECT ordre, grade FROM nuked_rangs inner join nuked_users on (nuked_rangs.grade=nuked_users.url) where users.url!='' ORDER BY ordre DESC");
No problemo ;-)
Je vais avoir l'air de me répéter, mais perso je ne connais pas le contexte de
ton appli, je veux bien t'aider si tu donnes des infos précises :
- structure des tables
- quelques lignes
- le résultat escompté avec ces quelques lignes.
Pour des applis dont je connais le modèle de données il me faut parfois
plusieurs jours avant de trouver la requète correcte, alors c'est pas avec le
peu d'info que tu donnes que tu auras de l'aide.
Typiquement dans ton dernier POST tu met un critère de selection qui est url
issu de la table users, mais dans ton lien http://p.bacquet.free.fr/tables.txt et
je ne vois pas ce champ.
Perds un peu de temps à refaire un fichier tables.txt et à exprimer ce que tu
cherches à faire. J'essaierai dans la mesure de mes moyens de te répondre.
Dans l'attente de quelques précisions, crabs
Je vais avoir l'air de me répéter, mais perso je ne connais pas le contexte de
ton appli, je veux bien t'aider si tu donnes des infos précises :
- structure des tables
- quelques lignes
- le résultat escompté avec ces quelques lignes.
Pour des applis dont je connais le modèle de données il me faut parfois
plusieurs jours avant de trouver la requète correcte, alors c'est pas avec le
peu d'info que tu donnes que tu auras de l'aide.
Typiquement dans ton dernier POST tu met un critère de selection qui est url
issu de la table users, mais dans ton lien http://p.bacquet.free.fr/tables.txt et
je ne vois pas ce champ.
Perds un peu de temps à refaire un fichier tables.txt et à exprimer ce que tu
cherches à faire. J'essaierai dans la mesure de mes moyens de te répondre.
Dans l'attente de quelques précisions, crabs
Salut Crabs,
Voila donc ce que tu m'as demandé, j'ai fais une capture d'écran pour les 2 tables cibles, et il faut donc lier les colonnes "url" et "grade" pour montrer que c'est les memes et faie un ORDER BY ordre DESC pour trier du grade le plus élevé au plus bas, je t'ai mis une portion du script dans le fichier texte. Les voici :
http://p.bacquet.free.fr/rangs.jpg
http://p.bacquet.free.fr/users.jpg
http://p.bacquet.free.fr/script_team.txt
Merci pour ton aide !
Voila donc ce que tu m'as demandé, j'ai fais une capture d'écran pour les 2 tables cibles, et il faut donc lier les colonnes "url" et "grade" pour montrer que c'est les memes et faie un ORDER BY ordre DESC pour trier du grade le plus élevé au plus bas, je t'ai mis une portion du script dans le fichier texte. Les voici :
http://p.bacquet.free.fr/rangs.jpg
http://p.bacquet.free.fr/users.jpg
http://p.bacquet.free.fr/script_team.txt
Merci pour ton aide !
Salut Crabs,
Je n'y arrive toujours pas... Voici la ligne de code que j'ai mise :
Et voici une image du résultat :
http://p.bacquet.free.fr/roster_trouble.jpg
J'ai tout essayé de par mes connaissances et je vois toujours pas... merci pour ton aide.
Phil
Je n'y arrive toujours pas... Voici la ligne de code que j'ai mise :
$sql2=mysql_query("SELECT pseudo, mail, icq, msn, aim, yim, rang, country, url, abrev FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade AND u.niveau>1 AND u.team = $team ORDER BY r.id DESC");
$nb_members = mysql_num_rows($sql2);
Et voici une image du résultat :
http://p.bacquet.free.fr/roster_trouble.jpg
J'ai tout essayé de par mes connaissances et je vois toujours pas... merci pour ton aide.
Phil
Salut encore,
J'ai avancé, maintenant la query marche et les résultats s'affichent mais tjrs en desordre.
J'ai été voir dans MySQL j'ai exécuté la query et il s'avère que la demande de ORDER BY n'est pas prise en compte, j'ai essayé avec d'autres colonnes et ça marche pourtant... alors pourquoi ça marche pas avec cette colonne "id" ?
Voici la ligne de FETCH :
SELECT u.pseudo, u.mail, u.icq, u.msn, u.aim, u.yim, u.rang, u.country, u.url, u.abrev, r.grade, r.id FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade AND u.niveau>1 AND u.team = 2 ORDER BY r.id DESC
Merci pour l'aide
J'ai avancé, maintenant la query marche et les résultats s'affichent mais tjrs en desordre.
J'ai été voir dans MySQL j'ai exécuté la query et il s'avère que la demande de ORDER BY n'est pas prise en compte, j'ai essayé avec d'autres colonnes et ça marche pourtant... alors pourquoi ça marche pas avec cette colonne "id" ?
Voici la ligne de FETCH :
SELECT u.pseudo, u.mail, u.icq, u.msn, u.aim, u.yim, u.rang, u.country, u.url, u.abrev, r.grade, r.id FROM nuked_users AS u, nuked_rangs AS r WHERE u.url = r.grade AND u.niveau>1 AND u.team = 2 ORDER BY r.id DESC
Merci pour l'aide
Yessssssssssssss ça y est ça marche je l'ai mis en int(4) et c'est impec MERCI INFINIMENT CRABS que Dieu te bénisse merci encore j'aurais jamais réussi sans ta précieuse aide.
Phil
Phil
Il suffit de faire une jointure sur tes 2 tables, les champs grade et rang sont les même si j'ai bien compris.
select machin, truc from rangs inner join users on (rangs.grade=users.rang) where rangs.grade='5' and users.user='toto'
Salut,
Le mieux c'est tu files via un fichier accessible sur le net (comme au 1er post)
les structures de tes tables, queiques lignes de ces même tables,
les données qui vont servir de critères à la realistion de ta requette et
le resultat que tu escomptes.
Et comme l'urgence n'attend pas, dès que tu auras donné ces infos très
précisément, j'essaierai de voir si je peux t'aider pour cette requette.
A+, crabs
Le mieux c'est tu files via un fichier accessible sur le net (comme au 1er post)
les structures de tes tables, queiques lignes de ces même tables,
les données qui vont servir de critères à la realistion de ta requette et
le resultat que tu escomptes.
Et comme l'urgence n'attend pas, dès que tu auras donné ces infos très
précisément, j'essaierai de voir si je peux t'aider pour cette requette.
A+, crabs