[MySQL] Requete sur 3 tables [résolu]
Forum Programmation : [MySQL] Requete sur 3 tables [résolu]
Bonjour à tous,
Voici mon probleme:
J'ai trois tables:
- Une table objets, contenant deux colonnes: id et infos
- Une table users contenant deux colonnes: id et pseudo
- Une table historique qui contient 3 colonnes: user_id,objet_id et date_modif
Comme on peut le voir, la table historique est liée à la table users et a la table objet. On peut imagner qu'elle retrace les actions des utilisateurs sur les objet (quand un utlisateur effectue une action sur un objet, une nouvelle entrée est crée sur la table historique, avec l'id de l'utilisateur, l'id de l'objet et la date courante).
En considérant cette configuration, quelles requetes me permettraient de:
1)Récupérer la liste des objets avec pour chaque objet, la date de la derniere modification, et le pseudo de l'utilisateur associé a cette modification?
2)Récupérer la liste des objets avec pour chaque objet la liste des modifications associés (date et pseudo de l'utilisateur associé)? (je ne sais pas si c'est possible)
3) (à défaut de 2) Récupérer la liste des objets et pour chaque objet, les N dernieres modifications?
Pour information, monSGDB est mySQL (v 4.1), et j'utilise aussi PHP (v4).
Sinon,quelqu'un aurait-il un lien pour apprendre à créer des requetes mySQL complexes sur plusieurs tables?
Merci d'avance.
Bonne journée
Message édité par Halike le 09-09-2007 à 23:14:43
Le site du zero, le cour sur php/MySQL doit bien expliquer ca non ?
| St3fff a écrit : Le site du zero, le cour sur php/MySQL doit bien expliquer ca non ? |
Je viens de vérifier, et je n'ai pas trouvé
.
Je ne pense pas que les jointures complexes soient expliquées dans ce cours d'introduction, et je n'en ai pas le souvenir non plus.
Une autre idée ?
Répondre à Halike
Tu n'as pas chercher beaucoup...
Frenchement j'ai mit moin de 30 secondes
http://www.siteduzero.com/tuto-3-1 [...] nnees.html
| St3fff a écrit : Tu n'as pas chercher beaucoup...
|
Salut,
Merci de te pencher sur mon cas.
Cependant, il semblerait que je me sois mal expliqué.
Je sais faire des requetes simples sur une table mySQL, mon probleme n'est pas la. A la limite, je sais meme faire des requetes incluant une jointure simple. Le fait est que les requetes que je demande ici portent sur 3 tables différentes,liées entre elles.
Peut etre faut il que je précise que je souhaiterait tout faire en une seule requete (je saurais bricoler un truc en php qui me fasse le boulot, mais ca ne me parait ni propre, ni optimisé). Je pense que c'est possible, et c'est pourquoi je fais appel à ce forum.
Et pour information, ca fait 2 jours que je cherche, et je continue de chercher.
Enfin merci pour tes conseils, meme si je n'ai pas avancé,je me sens moi seul
.
Bonne journée.
Répondre à Halike
Tu veus dire, une seul requete qui fasse sur les trois tables ?
Impossible, tu fait une requete qui prend l'id qui tu remet dans ta deuxieme etc...
Par contre tu peux utiliser UNION, mais pas pour ce cas !
Mouais, c'est justement ce que je cherche a eviter.
Je suis sur que c'est possible (renseigne toi sur le mot-clé JOIN),mais c'est encore trop complexe pour moi.
Cependant, j'ai trouvé ca tout a l'heure, et je suis en train de regarder car ca pourrait etre la solution a mes problemes.
Je te/vous tiens au courant.
Répondre à Halike
voila une requete qui va sélectionner tout l'historique avec les infos des deux autres tables :
select * from historique
(INNER JOIN users ON users.id = historique.id_user)
INNER JOIN objets ON objets.id = historique.id_objet
Voila je n'ai pas testé mais a priori je n'ai pas fait de faute ^^
@Steff : C'est bien de vouloir aider , mais renseigne toi avant de dire nimp
Répondre à Kymic@IDN
En effet, pour moi il était encore au niveau de comprendre une requête SQL
Avec un peu de retard...
Un énoooorme merci à Kyimic, c'est tout à fait ca que je recherchais.
J'ai juste enlevé les parentheses (je me récupérais une erreur de syntaxe SQL sinon), et ca fonctionne au poil.
Encore merci
Bonne journée
Répondre à Halike
Il y a 1728 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
