[SQL] Select, Distinct, Max, Group by et autres fariboles
12 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[SQL] Select, Distinct, Max, Group by et autres fariboles
Bon hé bien je sèche un peu sur une requête...
Donc, je possède une table "historique" permettant d'enregistrer diverses actions relatives à des logins (plus de détails par ici:
historique
id_historique/date_insert/login/table_cible/champ/valeur
Quelques données :
1 20060721112711 client3 client nom Dupuis
2 20060719111630 client3 client newsletter 1
3 20060721112826 client3 client newsletter 0
4 20060913112935 client3 client newsletter 1
Je souhaiterais créer une requete permettant de faire ressortir, pour un login donné, les dernières action effectuées pour le couple table_cible/champ .
Donc ici, pour le login client3, faire ressortir :
1 20060721112711 client3 client nom Dupuis
4 20060913112935 client3 client newsletter 1
J'ai tenté en vain quelques requêtes (avec GROUP BY, MAX etc...), mais je bloque vraiment pour le coup.
Si une âme charitable passant par là voulait bien éclairer ma lanterne... je lui en serait éternellement reconnaissant.
Merci par avance
Donc, je possède une table "historique" permettant d'enregistrer diverses actions relatives à des logins (plus de détails par ici:
historique
id_historique/date_insert/login/table_cible/champ/valeur
Quelques données :
1 20060721112711 client3 client nom Dupuis
2 20060719111630 client3 client newsletter 1
3 20060721112826 client3 client newsletter 0
4 20060913112935 client3 client newsletter 1
Je souhaiterais créer une requete permettant de faire ressortir, pour un login donné, les dernières action effectuées pour le couple table_cible/champ .
Donc ici, pour le login client3, faire ressortir :
1 20060721112711 client3 client nom Dupuis
4 20060913112935 client3 client newsletter 1
J'ai tenté en vain quelques requêtes (avec GROUP BY, MAX etc...), mais je bloque vraiment pour le coup.
Si une âme charitable passant par là voulait bien éclairer ma lanterne... je lui en serait éternellement reconnaissant.
Merci par avance
Mr Go, je pense qu'il te manque un champ date (DATETIME) dans ton journal d'historique (ça correspond à une date ça : 20060721112711 ?)
La requête sera alors très facile :
SELECT ce que tu veux WHERE table_cible="'.$tatable.'" ORDER BY TaDate LIMIT 0,30 (affiche les 30 dernières actions de ton client)
La requête sera alors très facile :
SELECT ce que tu veux WHERE table_cible="'.$tatable.'" ORDER BY TaDate LIMIT 0,30 (affiche les 30 dernières actions de ton client)
Dernière édition par blman le Ven Juil 21, 2006 11:27, édité 2 fois.
Totalement au hasard, pas de mysql pour tester, j'avoue mon faible c oracle
J'ai mis le "select mdate.." du milieu car je savais plus sil était possible dans le select le plus imbriqué de grouper sur des champs non sélectés. Si oui, alors le select du milieu saute.
- Code: Tout sélectionner
select * from table where login='client3' and date in
(select mdate from (
(select max(date) as mdate, table_cible_champ from table where login='client3' group by table_cible, champ)
)
J'ai mis le "select mdate.." du milieu car je savais plus sil était possible dans le select le plus imbriqué de grouper sur des champs non sélectés. Si oui, alors le select du milieu saute.
Malheureusement, il m'apparaît une jolie erreur de syntaxe...
- Code: Tout sélectionner
SELECT *
from historique
WHERE login='client3'
AND date_insert IN
(select mdate from ((select max(date_insert) as mdate, table_cible, champ from historique where login='client3' group by table_cible, champ)
)
MDB2 Error: syntax error
Salut,
J'ai fait un petit test vite fait, :
Chez moi ça me sort le resultat demandé.
C'est ça ?
J'ai fait un petit test vite fait, :
- Code: Tout sélectionner
SELECT *
FROM `histo`
WHERE `login` = 'client3'
GROUP BY `champ`
ORDER BY `date_insert` DESC
Chez moi ça me sort le resultat demandé.
C'est ça ?
- Code: Tout sélectionner
SELECT *
FROM `historique`
WHERE `login` = 'client3'
GROUP BY `table_cible`,`champ`
ORDER BY `date_insert` DESC
retourne
- Code: Tout sélectionner
Array (
[0] => Array ( [id_historique] => 1 [date_insert] => 20060721112711 [login] => client3 [table_cible] => client [champ] => nom [valeur] => Dupuis )
[1] => Array ( [id_historique] => 2 [date_insert] => 20060719111630 [login] => client3 [table_cible] => client [champ] => newsletter [valeur] => 1 ) )
date_insert devrait être égal à 20060921112935 pour la deuxième ligne.
Nouvelle tentative, va falloir que tu renommes les champs :
- Code: Tout sélectionner
select * from matable where login='client3' and date in (
select mdate from (select max(date) as mdate, cible, champ from matable where login='client3' group by cible, champ) as mdate
)
select * from historique where login='client3' and date_insert in (
select mdate
from (select max(date) as mdate, table_cible, champ from historique where login='client3' group by table_cible, champ) as mdate
)
MDB2 Error: syntax error
Malheureusement, non plus... ;/
Je rebondis sur moi même ^^ :
pour donner une idée, la requête devrait être la suivante
Bien évidemment, cette requête ne marche absolument pas... =)
pour donner une idée, la requête devrait être la suivante
- Code: Tout sélectionner
select DISTINCT (table_cible,champ), [AUTRES CHAMPS]
from historique
where login='client3'
ORDER BY date_insert DESC
Bien évidemment, cette requête ne marche absolument pas... =)
12 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google AdWords introduit le concept de niveau de qualité
- Du nouveau du côté des laboratoires de Google : Google Labs
- Accord entre Ask Jeeves et Google
- AdSense Tracking : statistiques détaillées sur les clics AdSense
- Outils Google pour les entreprises : Google Agency Toolkit
- Google Calendar API
- De la publicité ciblée dans les cartes de Google Local
- OpenSocial : le projet de Google pour contrôler les réseaux sociaux
- sql : requête select MAX(champ) from table
- Contraire de "SELECT DISTINCT" en SQL
- Probleme de SELECT DISTINCT
- MySql selection sans doublon (select distinct)
- MySQL : SELECT spécial avec GROUP BY sur condition ?
- select max(id) et clause where
- requête sql GROUP BY
- Aide PHP pour la fonction SELECT MAX
- Problème avec clause DISTINCT dans requête SQL
- [résolu] [sql] Savoir si un GROUP BY a été appliqué
- Probleme select SQL
- "select MAX" pour plusieurs valeurs
- max 100 sur champs de table SQL
- [SQL]Requete select à l'intérieur d'un Delete
- Soucis sur requête sql avec MIN et MAX
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum