Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 09/09/2011, 14h21   #1
Invité de passage
 
Inscription : août 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 7
Points : 3
Points : 3
Par défaut [Requête SQL] Problème de réalisation

Bonjour,

J'ai de petits problèmes pour réaliser deux requêtes SQL qui me semblaient basiques à priori.
Voici deux tables :

ARTICLE
id
author_id
category_id
isEnabled
subject
body
createdAt
updatedAt
slug

COMMENTAIRE
id
author_id
topic_id
body
createdAt
updatedAt

J'aimerais effectuer sur ces tables deux fonctionnalités :

Retourner les trois derniers articles commentés
Retourner les trois articles les plus commentés ces 30 derniers jours

Malheureusement, je me suis quelque peu emmêlé les pinceaux car je n'y arrive pas Pourriez-vous m'aider ? Merci d'avance.
Larchuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h36   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
Bonjour,

Sans connaitre votre SGBD c'est plus compliqué.

Sinon regardez du côté des ordres LIMIT, FETCH FIRST etc...

Pour la deuxieme requête il faudrai regarder du côté de la clause GROUP BY et la fonction COUNT(*) et reboucler avec votre 1ere requete.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h53   #3
Membre émérite
 
Inscription : août 2008
Messages : 835
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 835
Points : 823
Points : 823
Bonjour,

La fonction de fenêtrage row_number() doit également vous permettre d'arriver à vos fins. Elle fait partie de la norme SQL il me semble, mais ça ne garantit pas que votre SGBD l'implémente.
Snipah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h56   #4
Invité de passage
 
Inscription : août 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 7
Points : 3
Points : 3
Si par "connaître votre SGBD", vous entendez le fournisseur, c'est MySQL. Mais la requête doit respecter la norme SQL en vigueur.
Si vous entendiez plutôt le contenu/schema de la DB, la voici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE IF NOT EXISTS `commentaire` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `article_id` int(11) NOT NULL,
  `body` longtext NOT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`id`),
)
 
CREATE TABLE IF NOT EXISTS `article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `isEnabled` tinyint(1) NOT NULL,
  `subject` varchar(100) NOT NULL,
  `body` longtext NOT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  `slug` varchar(200) NOT NULL,
  PRIMARY KEY (`id`),
)
Larchuma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 18h44   #5
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 641
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 641
Points : 2 634
Points : 2 634
Donc,

avec MySql c'est bien du côté du "LIMIT" qu'il faut que vous regardiez.
Et bien-sur de "ORDER BY". Ceci pour la 1ere requete.

Pour la 2eme rien ne changera par rapport à ce que j'ai dit.

Revenez avec vos jeux d'essais (requete) si ca ne marche pas.
punkoff 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 +2. Il est actuellement 01h23.


 
 
 
 
Partenaires

Hébergement Web