create article
(
idarticle serial,
idmember interer /* cle vers le table membre */
date timestamp,
article text
);
voila je voudrait faire un
SELECT * FROM member INNER JOIN article ON member.idmember =
article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que
le critère de tri des utilisateurs n'est pas le nom mais la date du plus
recent article.
en gros si le dernier message vient de toto je voudrai avoir tous les
messages de toto en premiers triés par ordre de date decroissants.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jogo
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs dateLastArticle dans ta table Member. Je te conseille vivement de l'ajouter si ton tri doit être effectué souvent (utilise un trigger pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer. On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article FROM ( SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle FROM Member n INNER JOIN Article b ON n.idmember = b.idmember GROUP BY n.idmember, n.nom ) m INNER JOIN Article a ON m.idmember = a.idmember ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
-- La douleur me prive de ma chair, comme le plaisir me la donne. - Jean-Luc Marion - Le phénomène érotique -
create member
(
idmember serial,
nom text,
);
create article
(
idarticle serial,
idmember interer /* cle vers le table membre */
date timestamp,
article text
);
voila je voudrait faire un
SELECT * FROM member INNER JOIN article ON member.idmember =
article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date
sauf que le critère de tri des utilisateurs n'est pas le nom mais la
date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs
dateLastArticle dans ta table Member. Je te conseille vivement de
l'ajouter si ton tri doit être effectué souvent (utilise un trigger
pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer.
On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article
FROM (
SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle
FROM Member n INNER JOIN Article b ON n.idmember = b.idmember
GROUP BY n.idmember, n.nom ) m
INNER JOIN Article a ON m.idmember = a.idmember
ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
--
La douleur me prive de ma chair, comme le plaisir me la donne.
- Jean-Luc Marion - Le phénomène érotique -
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs dateLastArticle dans ta table Member. Je te conseille vivement de l'ajouter si ton tri doit être effectué souvent (utilise un trigger pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer. On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article FROM ( SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle FROM Member n INNER JOIN Article b ON n.idmember = b.idmember GROUP BY n.idmember, n.nom ) m INNER JOIN Article a ON m.idmember = a.idmember ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
-- La douleur me prive de ma chair, comme le plaisir me la donne. - Jean-Luc Marion - Le phénomène érotique -
nobody
Etienne SOBOLE a écrit :
salut j'ai deux tables
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article. en gros si le dernier message vient de toto je voudrai avoir tous les messages de toto en premiers triés par ordre de date decroissants.
voila. c'est faisable en une seul requete ca?
oui sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember
merci Etienne
Etienne SOBOLE a écrit :
salut j'ai deux tables
create member
(
idmember serial,
nom text,
);
create article
(
idarticle serial,
idmember interer /* cle vers le table membre */
date timestamp,
article text
);
voila je voudrait faire un
SELECT * FROM member INNER JOIN article ON member.idmember =
article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que
le critère de tri des utilisateurs n'est pas le nom mais la date du plus
recent article.
en gros si le dernier message vient de toto je voudrai avoir tous les
messages de toto en premiers triés par ordre de date decroissants.
voila.
c'est faisable en une seul requete ca?
oui sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article. en gros si le dernier message vient de toto je voudrai avoir tous les messages de toto en premiers triés par ordre de date decroissants.
voila. c'est faisable en une seul requete ca?
oui sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember
merci Etienne
Etienne SOBOLE
Merci je vais tester ca.
peut etre effectivement que je créerai le fameux champ lastdate a moins que je ne passe par une vue. en tous cas, merci pour ton aide, je teste...
Etienne
"Jogo" a écrit dans le message de news:
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember >> article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs dateLastArticle dans ta table Member. Je te conseille vivement de l'ajouter si ton tri doit être effectué souvent (utilise un trigger pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer. On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article FROM ( SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle FROM Member n INNER JOIN Article b ON n.idmember = b.idmember GROUP BY n.idmember, n.nom ) m INNER JOIN Article a ON m.idmember = a.idmember ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
-- La douleur me prive de ma chair, comme le plaisir me la donne. - Jean-Luc Marion - Le phénomène érotique -
Merci je vais tester ca.
peut etre effectivement que je créerai le fameux champ lastdate a moins que
je ne passe par une vue.
en tous cas, merci pour ton aide, je teste...
Etienne
"Jogo" <jogo@matabio.net> a écrit dans le message de news:
20070820202306.b70e6bf0.jogo@matabio.net...
create member
(
idmember serial,
nom text,
);
create article
(
idarticle serial,
idmember interer /* cle vers le table membre */
date timestamp,
article text
);
voila je voudrait faire un
SELECT * FROM member INNER JOIN article ON member.idmember >> article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date
sauf que le critère de tri des utilisateurs n'est pas le nom mais la
date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs
dateLastArticle dans ta table Member. Je te conseille vivement de
l'ajouter si ton tri doit être effectué souvent (utilise un trigger
pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer.
On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article
FROM (
SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle
FROM Member n INNER JOIN Article b ON n.idmember = b.idmember
GROUP BY n.idmember, n.nom ) m
INNER JOIN Article a ON m.idmember = a.idmember
ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
--
La douleur me prive de ma chair, comme le plaisir me la donne.
- Jean-Luc Marion - Le phénomène érotique -
peut etre effectivement que je créerai le fameux champ lastdate a moins que je ne passe par une vue. en tous cas, merci pour ton aide, je teste...
Etienne
"Jogo" a écrit dans le message de news:
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember >> article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article.
c'est faisable en une seul requete ca?
Ça dépend si tu comptes les requêtes imbriquée ;)
En fait ton problème n'en serait plus un si tu avais un champs dateLastArticle dans ta table Member. Je te conseille vivement de l'ajouter si ton tri doit être effectué souvent (utilise un trigger pour le garder à jour).
Mais bon, puisque ce champs n'existe pas, il va falloir l'inventer. On se retrouve donc avec un truc du genre :
SELECT m.nom, a.date, a.article FROM ( SELECT n.idmember, n.nom, max(b.date) AS dateLastArticle FROM Member n INNER JOIN Article b ON n.idmember = b.idmember GROUP BY n.idmember, n.nom ) m INNER JOIN Article a ON m.idmember = a.idmember ORDER BY m.dateLastArticle DESC, m.nom ASC, a.date DESC
-- La douleur me prive de ma chair, comme le plaisir me la donne. - Jean-Luc Marion - Le phénomène érotique -
Fred Brouard - SQLpro
Solution :
create table member ( idmember int, nom varchar(16), );
INSERT INTO member VALUES (1, 'toto') INSERT INTO member VALUES (2, 'titi') INSERT INTO member VALUES (3, 'tutu')
create table article ( idarticle int, idmember int, /* cle vers le table membre */ dateart datetime, article varchar(16) );
INSERT INTO article VALUES (1, 1, '20050101', 'pelle') INSERT INTO article VALUES (2, 1, '20050303', 'pioche') INSERT INTO article VALUES (3, 2, '20050404', 'rateau') INSERT INTO article VALUES (4, 2, '20050202', 'bèche')
SELECT *, (SELECT max(dateart) FROM article a2 WHERE a2.idmember = a.idmember) AS dmax FROM member m INNER JOIN article a ON m.idmember = a.idmember ORDER BY dmax DESC, nom, dateart DESC
A +
Etienne SOBOLE a écrit :
salut j'ai deux tables
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article. en gros si le dernier message vient de toto je voudrai avoir tous les messages de toto en premiers triés par ordre de date decroissants.
voila. c'est faisable en une seul requete ca?
merci Etienne
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
Solution :
create table member
(
idmember int,
nom varchar(16),
);
INSERT INTO member VALUES (1, 'toto')
INSERT INTO member VALUES (2, 'titi')
INSERT INTO member VALUES (3, 'tutu')
create table article
(
idarticle int,
idmember int, /* cle vers le table membre */
dateart datetime,
article varchar(16)
);
INSERT INTO article VALUES (1, 1, '20050101', 'pelle')
INSERT INTO article VALUES (2, 1, '20050303', 'pioche')
INSERT INTO article VALUES (3, 2, '20050404', 'rateau')
INSERT INTO article VALUES (4, 2, '20050202', 'bèche')
SELECT *, (SELECT max(dateart)
FROM article a2
WHERE a2.idmember = a.idmember) AS dmax
FROM member m
INNER JOIN article a
ON m.idmember = a.idmember
ORDER BY dmax DESC, nom, dateart DESC
A +
Etienne SOBOLE a écrit :
salut j'ai deux tables
create member
(
idmember serial,
nom text,
);
create article
(
idarticle serial,
idmember interer /* cle vers le table membre */
date timestamp,
article text
);
voila je voudrait faire un
SELECT * FROM member INNER JOIN article ON member.idmember =
article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que
le critère de tri des utilisateurs n'est pas le nom mais la date du plus
recent article.
en gros si le dernier message vient de toto je voudrai avoir tous les
messages de toto en premiers triés par ordre de date decroissants.
voila.
c'est faisable en une seul requete ca?
merci
Etienne
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
create table member ( idmember int, nom varchar(16), );
INSERT INTO member VALUES (1, 'toto') INSERT INTO member VALUES (2, 'titi') INSERT INTO member VALUES (3, 'tutu')
create table article ( idarticle int, idmember int, /* cle vers le table membre */ dateart datetime, article varchar(16) );
INSERT INTO article VALUES (1, 1, '20050101', 'pelle') INSERT INTO article VALUES (2, 1, '20050303', 'pioche') INSERT INTO article VALUES (3, 2, '20050404', 'rateau') INSERT INTO article VALUES (4, 2, '20050202', 'bèche')
SELECT *, (SELECT max(dateart) FROM article a2 WHERE a2.idmember = a.idmember) AS dmax FROM member m INNER JOIN article a ON m.idmember = a.idmember ORDER BY dmax DESC, nom, dateart DESC
A +
Etienne SOBOLE a écrit :
salut j'ai deux tables
create member ( idmember serial, nom text, );
create article ( idarticle serial, idmember interer /* cle vers le table membre */ date timestamp, article text );
voila je voudrait faire un SELECT * FROM member INNER JOIN article ON member.idmember = article.idmember
sauf que je voudrai trier cette requete par utilisateur et par date sauf que le critère de tri des utilisateurs n'est pas le nom mais la date du plus recent article. en gros si le dernier message vient de toto je voudrai avoir tous les messages de toto en premiers triés par ordre de date decroissants.
voila. c'est faisable en une seul requete ca?
merci Etienne
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation ********************* http://www.datasapiens.com ***********************
nobody
Fred Brouard - SQLpro a écrit :
Solution :
SELECT *, (SELECT max(dateart) FROM article a2 WHERE a2.idmember = a.idmember) AS dmax FROM member m INNER JOIN article a ON m.idmember = a.idmember ORDER BY dmax DESC, nom, dateart DESC
A +
et sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember
Fred Brouard - SQLpro a écrit :
Solution :
SELECT *, (SELECT max(dateart)
FROM article a2
WHERE a2.idmember = a.idmember) AS dmax
FROM member m
INNER JOIN article a
ON m.idmember = a.idmember
ORDER BY dmax DESC, nom, dateart DESC
A +
et sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember
SELECT *, (SELECT max(dateart) FROM article a2 WHERE a2.idmember = a.idmember) AS dmax FROM member m INNER JOIN article a ON m.idmember = a.idmember ORDER BY dmax DESC, nom, dateart DESC
A +
et sous SEQUEL c'est
SORT article BY MAX date idmember RUPTURE idmember