Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 03/02/2010, 17h39   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Par défaut Simple (?) Requête SQL

Voilà alors avant tout j'avou être débutant en SQL - PHP et Wordpress ^_^ alors pitié, soyez tolérant

Bon, mon problème est celui ci :

J'ai débuté la réalisation d'un blog sous wordpress, et j'aimerais pouvoir afficher dans ma sidebar, les 10 derniers articles commentés de mon blog.

J'ai trouvé du code sur internet qui m'a permis d'obtenir à peu près le résultat que j'attendais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
global $wpdb;
$number = 10;
$comments = $wpdb->get_results("SELECT Distinct post_title, comment_post_ID, comment_author, comment_author_url, comment_ID
FROM $wpdb->comments C, $wpdb->posts P 
WHERE C.comment_approved = '1' AND C.comment_post_id = P.ID
ORDER BY C.comment_date_gmt DESC LIMIT $number");?>
 
<h2 align="left">Les 10 derniers articles commentés</h2><br />
 
<ul id="recentcomments">
 
 
 
 
<?php
if ( $comments ) : foreach ($comments as $comment) :
echo '<li class="recentcomments">' . sprintf(__('%2$s commenté par %1$s'), get_comment_author_link(), '<a href="'. get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>'."\n";
endforeach; endif;
?>
Et voici le résultat obtenu :

- Article 1 commenté par ToTo
- Article 1 commenté par TaTa
- Article 2 commenté par TonTon
- Article 3 commenté par TiTi
- Article 3 commenté par TuTu

(dsl pour le manque d'inspiration hein )

Vous l'aurez compris, je ne veux pas que des mêmes articles de mon blog apparaissent plusieurs fois ici. L'idéal serait :

-Article 1 commenté par ToTo
-Article 2 commenté par TonTon
-Article 3 commenté par TiTi

Alors je me suis renseigné sur le comment du pourquoi, j'ai modifié la requête en essayant de faire un ' distinct ' ainsi que des jointures, mais mon trop faible niveau de compétence dans la matière m'handicape.

En espérant qu'une âme charitable (et douée en sql-php) m'éclaire sur le sujet, je vous remercie d'avance d'avoir pris le temps de lire ce post,

Amicalement,

Omnislash
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 17h41   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pourquoi afficher le commentaire de Toto plutot que celui de Tata pour l'article 1 ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 17h45   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par sabotage Voir le message
Pourquoi afficher le commentaire de Toto plutot que celui de Tata pour l'article 1 ?
Bah si tu regardes le code, c'est classé par ordre NON chronologique, donc je veux juste avoir le dernier post paru pour chaque articles ^^ Et comme toto a post son comment après TaTa ..
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2010, 17h56   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Sans le confirmer :
Code sql :
1
2
3
4
5
6
7
8
SELECT post_title, comment_post_ID, comment_author, comment_author_url, comment_ID
FROM  $wpdb->posts P 
JOIN $wpdb->comments 
ON C.comment_post_ID = P.ID
WHERE C.comment_approved = 1
GROUP BY P.ID
ORDER BY C.comment_date_gmt
DESC LIMIT $number
(si tu n'as pas de bol, tu auras le premier commentaire )
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 10h55   #5
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par sabotage Voir le message
(si tu n'as pas de bol, tu auras le premier commentaire )
Ahhh ! Merci de ta réponse, je n'ai déjà plus les articles qui se répètent


Cependant j'ai pas de bol comme tu as dis, je me retrouve avec le 1er commentaire xD

tu sais d'où ca peut venir ? ...

Merci encore de tes réponses qui m'aide beaucoup
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 11h53   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Dans l'autre sens ?
Code :
ORDER BY C.comment_date_gmt DESC
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 11h59   #7
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
GROUP BY P.ID
ORDER BY C.comment_date_gmt DESC
DESC LIMIT $number


ne marche pas Plus rien ne s'affiche, peut être parce que les deux DESC sont cote a cote ?
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 12h31   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
oups je n'avais pas vu qu'il trainait en bas
Code sql :
1
2
ORDER BY C.comment_date_gmt ASC
LIMIT $number
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 12h37   #9
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par sabotage Voir le message
oups je n'avais pas vu qu'il trainait en bas
Code sql :
1
2
ORDER BY C.comment_date_gmt ASC
LIMIT $number
en fait j'ai déjà tester ca avant que tu ne répondes, et ca inverse le sens dans lequel mes articles apparaissent, mais ca me met toujours le 1er commentaire fait, et pas le dernier
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 12h37   #10
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
Essaie plutôt cette requête :
Code SQL :
1
2
3
4
5
6
7
8
9
10
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM $wpdb->comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM $wpdb->posts AS p
  INNER JOIN $wpdb->comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT $number
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 12h45   #11
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par CinePhil Voir le message
Essaie plutôt cette requête :
Code SQL :
1
2
3
4
5
6
7
8
9
10
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM $wpdb->comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM $wpdb->posts AS p
  INNER JOIN $wpdb->comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT $number

o_O Du premier coup Monsieur ! Le dernier article commenté à bien été affiché en montrant le dernier post ! Seul soucis maintenant, je ne vois que le dernier article commenté et pas mes 10 derniers >.< Bizarre non ? surtout quand je vois que tu as conservé la variable $number , peut-être une faute de syntaxe ? Ou peut-être est-ce à cause de MAX(c.comment_date_gmt) ?


En tout cas merci de ta réponse

C'est chiant les noobs désolé
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 13h33   #12
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
Que vaut la variable $number ?

La sous-requête (alias 't'), donne la date du commentaire le plus récent pour chaque post.
On fait ensuite une jointure de ce résultat avec la table des commentaires pour avoir les informations des commentaires.

Si tu veux les 10 derniers commentaires, il faut que $number ait pour valeur 10.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 14h48   #13
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par CinePhil Voir le message
Que vaut la variable $number ?

La sous-requête (alias 't'), donne la date du commentaire le plus récent pour chaque post.
On fait ensuite une jointure de ce résultat avec la table des commentaires pour avoir les informations des commentaires.

Si tu veux les 10 derniers commentaires, il faut que $number ait pour valeur 10.

Oui j'ai compris ta requête, mais même en attribuant la valeur 10 a la variable ca ne marche pas Bien qu'étant débutant, je pense que la variable prend bien la valeur 10 dans ce code la :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
global $wpdb;
$number = 10;
$comments = $wpdb->get_results("SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM $wpdb->comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM $wpdb->posts AS p
  INNER JOIN $wpdb->comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT $number");?>
Ou alors j'ai vraiment rien compris du tout

Merci une fois de plus de ta réponse rapide
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 14h59   #14
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
En principe la variable $number a bien la valeur 10 oui !

Il faudrait essayer d'afficher la requête exacte envoyée au serveur et la lancer dans phpMyAdmin pour voir ce que ça donne.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 15h14   #15
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Ok donc je viens de test la requete directement sous phpmyadmin.

Seulement, je rencontre quelques problèmes (pour changer !)

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM $wpdb->comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM $wpdb->posts AS p
  INNER JOIN $wpdb->comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT $number
donc la impossible pour le serveur de savoir ce que signifie $number, puisque ya pas la déclaration de ma variable dans la requete. Donc j'ai remplacé $number par 10. Est-ce correct niveau syntaxe ? j'imagine que non sinon on ne se serait pas emmerdé à faire la déclaration de ce même $number.

Comment faire alors ?

Voici le message d'erreur que me donne phpmyadmin :

Code :
1
2
3
4
 MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '->comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) A' at line 2
Merci encore et encore pour toute l'attention que tu portes à mon problème.
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 15h25   #16
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
Remplacer $number par 10 est bien.

Le message d'erreur par contre indique une erreur de syntaxe due à la partie objet php de la requête.
Remplace ceci :
Code :
FROM $wpdb->comments AS c1
Par cela :
Et remplace ceci :
Par cela :
Essaie donc de lancer cette requête dans phpMyAdmin :
Code SQL :
1
2
3
4
5
6
7
8
9
10
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM posts AS p
  INNER JOIN comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT 10
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 15h56   #17
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Voila ! Je viens de tester le tout dans phpmyadmin.

Bon en fait au début il m'affichait une erreur : la table n'existe pas, j'ai vite compris que c'était a cause des modifs que tu avais faites, tu n'étais pas censé savoir que le $wpdb-> servait a donner le nom correct à mes tables qui en réalité ne s'appellent ni comments ni posts, mais wp_comments, wp_posts. Bref ^^

La requête SQL fonctionne sous phpmyadmin et via mon code php, mais toujours le même problème, je ne vois que le dernier post du dernier article, et non les 10 derniers Retour à la case départ (ou presque, j'aurais quand même appris des choses grace à vous jusque là )

Revoilou mon code x) :

Code :
1
2
3
4
5
6
7
8
9
10
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM wp_comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM wp_posts AS p
  INNER JOIN wp_comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT 10
Merci...
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 16h06   #18
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
Tu peux me donner la structure des tables par :
Code :
1
2
SHOW CREATE TABLE wp_posts ;
SHOW CREATE TABLE wp_comments
Ainsi qu'un petit jeu de données de ces tables pour que je puisse vérifier chez moi.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 16h31   #19
Invité de passage
 
Inscription : juillet 2009
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 26
Points : 2
Points : 2
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE `wp_comments` (
 `comment_ID` bigint(20) unsigned NOT NULL auto_increment,
 `comment_post_ID` bigint(20) unsigned NOT NULL default '0',
 `comment_author` tinytext NOT NULL,
 `comment_author_email` varchar(100) NOT NULL default '',
 `comment_author_url` varchar(200) NOT NULL default '',
 `comment_author_IP` varchar(100) NOT NULL default '',
 `comment_date` datetime NOT NULL default '0000-00-00 00:00:00',
 `comment_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
 `comment_content` text NOT NULL,
 `comment_karma` int(11) NOT NULL default '0',
 `comment_approved` varchar(20) NOT NULL default '1',
 `comment_agent` varchar(255) NOT NULL default '',
 `comment_type` varchar(20) NOT NULL default '',
 `comment_parent` bigint(20) unsigned NOT NULL default '0',
 `user_id` bigint(20) unsigned NOT NULL default '0',
 `choix` varchar(100) NOT NULL,
 PRIMARY KEY  (`comment_ID`),
 KEY `comment_approved` (`comment_approved`),
 KEY `comment_post_ID` (`comment_post_ID`),
 KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`),
 KEY `comment_date_gmt` (`comment_date_gmt`),
 KEY `comment_author_IP` (`comment_author_IP`),
 KEY `comment_post_ID_2` (`comment_post_ID`)
) ENGINE=MyISAM AUTO_INCREMENT=57 DEFAULT CHARSET=utf8

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
wp_posts  	CREATE TABLE `wp_posts` (
 `ID` bigint(20) unsigned NOT NULL auto_increment,
 `post_author` bigint(20) unsigned NOT NULL default '0',
 `post_date` datetime NOT NULL default '0000-00-00 00:00:00',
 `post_date_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
 `post_content` longtext NOT NULL,
 `post_title` text NOT NULL,
 `post_excerpt` text NOT NULL,
 `post_status` varchar(20) NOT NULL default 'publish',
 `comment_status` varchar(20) NOT NULL default 'open',
 `ping_status` varchar(20) NOT NULL default 'open',
 `post_password` varchar(20) NOT NULL default '',
 `post_name` varchar(200) NOT NULL default '',
 `to_ping` text NOT NULL,
 `pinged` text NOT NULL,
 `post_modified` datetime NOT NULL default '0000-00-00 00:00:00',
 `post_modified_gmt` datetime NOT NULL default '0000-00-00 00:00:00',
 `post_content_filtered` text NOT NULL,
 `post_parent` bigint(20) unsigned NOT NULL default '0',
 `guid` varchar(255) NOT NULL default '',
 `menu_order` int(11) NOT NULL default '0',
 `post_type` varchar(20) NOT NULL default 'post',
 `post_mime_type` varchar(100) NOT NULL default '',
 `comment_count` bigint(20) NOT NULL default '0',
 PRIMARY KEY  (`ID`),
 KEY `post_name` (`post_name`),
 KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),
 KEY `post_parent` (`post_parent`)
) ENGINE=MyISAM AUTO_INCREMENT=879 DEFAULT CHARSET=utf8
Et bon appétit bien sur !


Voila maintenant deux exemple de la table comment remplie :

40 - 725 - 2015 - xXxX@hotmail.com -http://www.deux-mille-quinze.com - 93.16.56.250 - 2010-01-27 21:59:15 - 2010-01-27 19:59:15 - Ce qui est vraiment intéressant, c’est que APPLE v... - 0 - 1 - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;... - 0

et l'autre :

28 - 517 - David - XXX@hotmail.com - 84.97.240.23 - 2009-12-15 21:46:27 - 2009-12-15 19:46:27 - Cool... j'ai hâte de tester dans mon lycée - 0 - 1 - Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) Ap... - 0 - 0


Voila ! La seule colonne vide dans ces deux exemples est : comment_type.

Voici maintenant un exemple de la table posts remplie :

725 - 3 - 2010-01-27 12:49:50 - 2010-01-27 10:49:50 - <p style="text-align: center;"><img class="alignce... - Tablette Apple C'est pour demain ! - publish - open - open - tablette-apple - 2010-01-27 12:51:19 - 2010-01-27 10:51:19 - 0 - http://www.xXxXx.com/Labs/?p=725 - 0 - post - 1



517 - 3 - 2009-12-14 13:55:07 - 2009-12-14 11:55:07 - <img class="aligncenter size-full wp-image-518" ti... - WuiperSms System - Le wuip est votre petit messager de poche qui vous... - publish - open - open - wuiper-sms-system - 2009-12-14 13:59:03 - 2009-12-14 11:59:03 - 0 - http://www.xXXXX.com/Labs/?p=517 - 0 -post - 1

Les seuls colonnes non remplies ici sont : post_password, to_ping, pinged, post_content_filtered, post_parent, menu_order et post_mime_type.


Tu remarqueras que les deux exemples de chaque table correspondent entre eux J'espère bien t'avoir donné tout ce que tu demandais, merci encore
OmnislashS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2010, 23h12   #20
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur développement logiciels
Inscription : août 2006
Messages : 10 037
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 037
Points : 16 317
Points : 16 317
Envoyer un message via MSN à CinePhil
Au temps pour moi !
Il manquait dans ma requête un GROUP BY qui a dû sauter dans un copier coller.
Essaie cette requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT t.post_title, c1.comment_post_ID, c1.comment_author, c1.comment_author_url, c1.comment_ID
FROM wp_comments AS c1
INNER JOIN (
  SELECT p.post_title, MAX(c.comment_date_gmt) AS Date_dernier_commentaire
  FROM wp_posts AS p
  INNER JOIN wp_comments AS c ON c.comment_post_id = p.ID
  WHERE c.comment_approved = 1
  GROUP BY p.post_title
) AS t ON c1.comment_date_gmt = t.Date_dernier_commentaire
ORDER BY c1.comment_date_gmt DESC
LIMIT 10
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 01h21.


 
 
 
 
Partenaires

Hébergement Web