Select delete
Résolu
guillaumeG41
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
guillaumeG41 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
guillaumeG41 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai une table de log contenant un champ id , un champs adresse IP et un champs date.
La table se rempli a chaque fois qu'il y a une requête sur une page.
j'aimerai voir la première date de connexion pour chaque adresse IP distinct.
j'arrive a voir les adresse ip different par :
select distinct ip from log
peut on rajouter un champs dans le select en gardant le DISTINCT sur le champs IP.
et par la suite j'aimerai supprimer le reste de la table en gardant chaque premiere connexion d'une adresse ip distinct
Merci de vos reponses
La table se rempli a chaque fois qu'il y a une requête sur une page.
j'aimerai voir la première date de connexion pour chaque adresse IP distinct.
j'arrive a voir les adresse ip different par :
select distinct ip from log
peut on rajouter un champs dans le select en gardant le DISTINCT sur le champs IP.
et par la suite j'aimerai supprimer le reste de la table en gardant chaque premiere connexion d'une adresse ip distinct
Merci de vos reponses
3 réponses
Salut,
Pour la sélection
Ce que tu veux faire est un regroupement sur la colonne ip. À un regroupement, on associe une (ou des) fonction(s) récapitulative(s) parmi : MIN, MAX, SUM, AVG et COUNT
tu feras donc :
pour supprimer ce qui n'est pas listé ci dessus, tu devras faire
Pour la sélection
Ce que tu veux faire est un regroupement sur la colonne ip. À un regroupement, on associe une (ou des) fonction(s) récapitulative(s) parmi : MIN, MAX, SUM, AVG et COUNT
tu feras donc :
select ip, min(date_connexion) from log group by ip
pour supprimer ce qui n'est pas listé ci dessus, tu devras faire
delete from log where (ip, date_connexion) not in ( select ip, min(date_connexion) from log group by ip )
salut , et merci de ta réponse si rapide.
le select 'IP_address', min( 'date')
from 'log_ip'
group by 'IP_address'
Marche nickel
Le
select * from 'log_ip'
where ('IP_address', 'date')
not in (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
)
Marche aussi !!
par contre le delete me renvoie une erreur
delete from 'log_ip'
where ('IP_address', 'date')
not in (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
)
#1093 - You can't specify target table 'log_ip' for update in FROM
clause
Mais en faite j'ai trouvé il faire une table temporaire qui fera passerelle entre le select et le delete ce qui donne :
delete from 'log_ip'
where ('IP_address', 'date')
not in (
select * from (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
) tmp
)
Si ca peux aider voila merci beaucoup en tout cas
le select 'IP_address', min( 'date')
from 'log_ip'
group by 'IP_address'
Marche nickel
Le
select * from 'log_ip'
where ('IP_address', 'date')
not in (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
)
Marche aussi !!
par contre le delete me renvoie une erreur
delete from 'log_ip'
where ('IP_address', 'date')
not in (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
)
#1093 - You can't specify target table 'log_ip' for update in FROM
clause
Mais en faite j'ai trouvé il faire une table temporaire qui fera passerelle entre le select et le delete ce qui donne :
delete from 'log_ip'
where ('IP_address', 'date')
not in (
select * from (
select 'IP_address', min('date')
from 'log_ip'
group by 'IP_address'
) tmp
)
Si ca peux aider voila merci beaucoup en tout cas