|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Bonjour à tous !
Je suis confronté à un problème qui m'agace et qui me coince un peu... Je m'explique. Je possède plusieurs tables pour les différents commentaires sur mon site. J'ai donc les tables suivantes : - comments_news (id_comments, id_externe, pseudo, commentaire, date) - comments_tests (pareil) - comments_videos (pareil) - comments_soluces (pareil) En gros je souhaite créer un bloc avec les dix derniers commentaires sur mon site. Si j'avais tout regroupé en une seule table, ca aurait été facile mais là je sais pas comment faire. J'ai réfléchi à une manière de faire mais je sais pas du tout si c'est faisable... Je prends les dix derniers commentaires de chaque table, donc en tout ça me ferait 40 variables à retenir. Puis je trie ces variables par date et j'affiche les 10 dernières... Dans la théorie ça a l'air simple mais dans la pratique je me dis que je peux faire plus facile... J'espère que vous pourriez m'aider à me débloquer et me donner des idées... Merci d'avance ! |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
La solution la plus simple ce sont les unions de mysql :
http://dev.mysql.com/doc/refman/5.0/fr/union.html Tu fait un union des 4 recherches des 4 derniers tu trie par date et tu prends les 10 derniers |
|
10
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Merci déjà pour ta réponse !
Alors j'ai un peu regardé même si j'ai pas tout compris... En gros je ferais un truc comme ça : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Oui
|
|
10
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Bon j'ai réussi à faire afficher les commentaires ! Merci, merci merci !
Par contre, maintenant faut que je trouve un moyen de faire des liens pour chaque commentaire, mais j'avoue que ça coince encore plus... |
|
|
00
|
|
|
#6 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Pas vraiment :p
Au lieu de faire des select * tu rajoute un select 'xx' AS Type, id_comments, id_externe, pseudo, commentaire, date from ... avec le xx qui change en fonction de la table pour connaitre le type de commentaires ou directement le calcul de l url si c'est possible |
|
10
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Je peux créer autant de "AS" que je veux ?
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Tu peut expliciter ta question ?
|
|
10
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Ben, dans les tables que j'ai actuellement, je n'ai que le strict nécessaire... Ma question serait de savoir si je peux créer de fausses variables dans la requete SQL et si oui, si je peux en faire tant que je veux :p
|
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Alors la réponse est oui
|
|
10
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Je :up: le topic car j'ai besoin d'aide de nouveau. J'aimerais créé des fausses variables comme j'ai demandé plus haut mais je vois pas comment faire. JE vais expliquer quelle variable je voudrais créer.
Pour (SELECT * FROM comments_news ORDER BY id LIMIT 10) j'aimerais créer une variable qui s'appelle "adresse" et qui aurait comme contenu la chaine de caractères "news.php?article=". Comment je pourrais m'y prendre en sachant qu'une variable "adresse" sera aussi créée pour les autres requêtes mais elle serait différente ? Merci ! |
|
|
00
|
|
|
#12 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Hum hum hum je t'ai donner la réponse plusieurs posts plus haut déjà
Code :
select 'news.php?article=' AS adresse, id_comments, id_externe, pseudo, commentaire, date from comments_news ORDER BY id LIMIT 10 |
|
10
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Non mais je suis complètement débile xD En fait, je confondais avec "INSERT INTO"... Je pensais qu'il fallait utiliser une "value" ^^ Je crois que je devrais reprendre les cours de sql de zéro parce que je me sens très très con !
Merci !
|
|
|
00
|
|
|
#14 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Bon, maintenant je me pose la question, toujours sur ces mêmes requetes SQL (heureusement ^^).
Pour compléter mon adresse, j'ai besoin de récupérer dans une autre table une valeur via un paramètre SQL établi plus haut : le id_externe. En effet, dans le cas de news, j'aimerais récupérer une information de la table "news" où la news possède le même id que "id_externe". Je pensais faire une sous-requête mais je vois pas trop où... Code :
Merci d'avance et désolé pour le dérangement :p |
||
|
|
00
|
|
|
#15 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Il faut utiliser une jointure
Code :
SELECT a.x , b.y from a left join b on (a.id = b.id) Je pense qu'effectivement tu devrais aller refaire un tour du coté des tutos SQL proposé ici |
|
10
|
|
|
#16 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Je t'avoue que j'ai énormément de mal avec les jointures... Est-ce que je suis loin de la bonne solution ?
Code :
|
||
|
|
00
|
|
|
#17 | ||
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Pas très loin
Code :
Par contre je suppose qu'il manque quelque chose car si tu fait une jointure c'est normalement pour récupérer une information de la table news j'ai rajouter au hasard le news.article a toi de mettre les bonnes valeurs |
||
|
10
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Merci à toi, maintenant deux questions :
1) Est-ce que ce serait plus rapide de donner des noms plus courts à mes tables lors de cette requête SQL ? 2) Lorsque je voudrais récupérer les données pour les afficher sur le site, je devrais écrire $donnees['news.article'] ? Merci d'avance ^^ |
|
|
00
|
|
|
#19 |
|
Membre confirmé
![]() Inscription : juillet 2011 Messages : 146 ![]() |
Il est vrai qu'il est plus facile de demander que d'aller lire les tutos
1) Pas plus rapide mais plus simple pour décrire tes jointures et les valeurs que tu veux recupérer. 2) Non, seul le nom de la colonne est pris en compte, ce qui peut poser des soucis si tu ramène plusieurs colonne de plusieurs tables ayant le même nom c'est pour cela que tu peut utiliser une nouvelle fois l'opérateur AS. Code :
SELECT `comments_news`.`id_comments` AS `id_com`...
|
|
10
|
|
|
#20 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2008 Messages : 81 ![]() |
Je voudrais te remercier grandement car j'ai enfin pu modifier mon code et ça marche impeccablement ! Merci, merci, merci ! (et en plus j'ai tout compris :p )
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com