Requête Sql de trie j'arrive pas celle là
9 messages
• Page 1 sur 1
-

linkadress - WRInaute discret

- Messages: 156
- Inscription: 30 Mar 2006
Requête Sql de trie j'arrive pas celle là
Bon, après moulte recherche sur le langage SQL, je me décide à demander un conseil ou plutôt une solution si possible...
Je n'arrive pas à trier dans ma base les répétitions de pseudo posteur...
Si le pseudoA postent 10 liens et le posteurB postent 20liens ainsi de suite...
Je voudrais faire un Top Posteur en gros, classé par celui qui a le plus posté.
Je n'arrive pas à trier dans ma base les répétitions de pseudo posteur...
Si le pseudoA postent 10 liens et le posteurB postent 20liens ainsi de suite...
Je voudrais faire un Top Posteur en gros, classé par celui qui a le plus posté.
-

linkadress - WRInaute discret

- Messages: 156
- Inscription: 30 Mar 2006
Merci, j'avance déjà un peu avec votre requête, le truc dont je viens de me rendre compte, c'est que je fais pas d'update, d'un champ nbposts / pseudo, donc j'ai un paramètre manquant...
Donc il faut que je calcule le nb de fois ou on trouve un pseudo que je joigne à une comparaison avec les autres pseudos et que je ressorte un classement ...
Mais je ne vois pas la syntaxe...
Donc il faut que je calcule le nb de fois ou on trouve un pseudo que je joigne à une comparaison avec les autres pseudos et que je ressorte un classement ...
Mais je ne vois pas la syntaxe...
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
- Code: Tout sélectionner
--
-- Table structure for table `test`.`post`
--
DROP TABLE IF EXISTS `post`;
CREATE TABLE `post` (
`IDPost` int(10) unsigned NOT NULL auto_increment,
`IDPseudo` int(10) unsigned default NULL,
`link` varchar(45),
PRIMARY KEY (`IDPost`),
KEY `FK_post_1` (`IDPseudo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `test`.`post`
--
/*!40000 ALTER TABLE `post` DISABLE KEYS */;
INSERT INTO `post` (`IDPost`,`IDPseudo`,`link`) VALUES
(1,1,'linkA1'),
(2,1,'linkA2'),
(3,1,'linkA3'),
(4,2,'linkB1'),
(5,2,'linkB2');
/*!40000 ALTER TABLE `post` ENABLE KEYS */;
--
-- Table structure for table `test`.`pseudo`
--
DROP TABLE IF EXISTS `pseudo`;
CREATE TABLE `pseudo` (
`IDPseudo` int(10) unsigned NOT NULL auto_increment,
`Pseudo` varchar(45),
`email` varchar(45),
`nom` varchar(45) ,
PRIMARY KEY (`IDPseudo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Dumping data for table `test`.`pseudo`
--
/*!40000 ALTER TABLE `pseudo` DISABLE KEYS */;
INSERT INTO `pseudo` (`IDPseudo`,`Pseudo`,`email`,`nom`) VALUES
(1,'PseudoA','pseudoa@example.com','pseudoa'),
(2,'PseudoB','pseudoB@example.com','pseudob');
/*!40000 ALTER TABLE `pseudo` ENABLE KEYS */;
La requête SQL :
- Code: Tout sélectionner
SELECT pseudo, count(*) as NBPost
FROM pseudo ps INNER JOIN post po ON ps.IDPseudo = po.IDPseudo
GROUP BY pseudo
ORDER BY NBPost desc;
le résultat :
- Code: Tout sélectionner
pseudo NBPost
PseudoA 3
PseudoB 2
-

linkadress - WRInaute discret

- Messages: 156
- Inscription: 30 Mar 2006
Merci pour vos réponses rapides, et aussi pour ce script qui m'a grandement aidé, j'ai réussi à faire ce que je voulais 
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
Tu auras corrigé de toi même l'erreur grossière qui se cache dans ma requête SQL.
La requête marche mais elle n'est pas du tout optimisée.
Il vaut mieux faire :
GROUP BY IDPseudo => Clé primaire, Int, Champ indexé
plutôt que
GROUP BY Pseudo => Varchar non indexé
La requête marche mais elle n'est pas du tout optimisée.
Il vaut mieux faire :
GROUP BY IDPseudo => Clé primaire, Int, Champ indexé
plutôt que
GROUP BY Pseudo => Varchar non indexé
-

linkadress - WRInaute discret

- Messages: 156
- Inscription: 30 Mar 2006
Oui , j'ai un peu modifié l'énoncé des tables.
En fait j'ai créé une seconde table donc comme toi valeurpseudo, pour alimenter un champ lienspost qui pourra subir une comparaison....
J'avais perdu facile 1h car j'avais créé un champ lienspost varchar(50) que je tentais de classer alors que c'est mieux qu'en c'est un entier.
J'ai remanié la déclaration de tables, et les fonctions de requête en m'inspirant de ta vision du problème...
Une chose est sûre, j'aurais bien progressé sur Sql.
Je vais voir encore si je peux optimiser les calculs, et anticiper lorsque les bases seront importantes....
Merci, c'est bien cool.
En fait j'ai créé une seconde table donc comme toi valeurpseudo, pour alimenter un champ lienspost qui pourra subir une comparaison....
J'avais perdu facile 1h car j'avais créé un champ lienspost varchar(50) que je tentais de classer alors que c'est mieux qu'en c'est un entier.
J'ai remanié la déclaration de tables, et les fonctions de requête en m'inspirant de ta vision du problème...
Une chose est sûre, j'aurais bien progressé sur Sql.
Je vais voir encore si je peux optimiser les calculs, et anticiper lorsque les bases seront importantes....
Merci, c'est bien cool.
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google - 20-09-2002
- L'essentiel à savoir sur l'oculométrie (Eye Tracking - suivi du regard) - 12-02-2008
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Articles sur Google et le référencement - 22-11-2002
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Googlebot analyse certains codes JavaScript - 02-05-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Lancement confirmé de MSN Search - 20-01-2005
- Trouver la position d'un site dans Google
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Google, pour certains mots-clés recherchés. - Trouver la position d'un site dans Yahoo
Cet outil vous permet de vérifier si une ou plusieurs page(s) de votre site arrive(nt) dans les premiers résultats de Yahoo, pour certains mots-clés recherchés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

