cs_bir
Messages postés9Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention15 mars 2009
-
25 juin 2007 à 13:21
2016 -
19 juin 2016 à 15:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
ginios
Messages postés1Date d'inscriptiondimanche 22 février 2009StatutMembreDernière intervention14 juillet 2010 14 juil. 2010 à 14:19
merci mon pote cirdec14 ca m'aider becoup que soi dieu avec toi
fab421
Messages postés8Date d'inscriptionmercredi 18 juin 2008StatutMembreDernière intervention23 septembre 2010 8 juil. 2009 à 13:39
Bonjour,
Petite remarque pour les utilisateurs de SQL-Server...
En Transact-SQL il n'est pas permis d'associer un alias à la table dans laquelle on supprime un enregistrement. On est donc obligé de passer par une solution de ce type :
delete from <table>
where <clé primaire> in
(
select T1.<clé primaire>
from <table> T1, <table> T2
where T1.<champ a comparer 1> = T2.<champ a comparer 1>
and T1.<champ a comparer 2> = T2.<champ a comparer 2>
<etc.>
and T1.<clé primaire> > T2.<clé primaire>
)
simodel
Messages postés38Date d'inscriptionvendredi 29 février 2008StatutMembreDernière intervention19 juin 2009 9 déc. 2008 à 11:29
ERRATUM
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.ID) Not In (SELECT min(ID)
FROM [user] T2
WHERE T1.matricule = T2.matricule
GROUP BY matricule
)
simodel
Messages postés38Date d'inscriptionvendredi 29 février 2008StatutMembreDernière intervention19 juin 2009 9 déc. 2008 à 11:24
Bonjour,
j'ai executé ces requêtes mais sans aucun résultat, j'ai une erreur : syntaxe incorrecte vers 'T1' :
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)
la Table [user] contient des doublons, je travaille sous SQL 2005, mais j'ai juste le moteur de base de données, quand j'execute la requête pour affciher les doublons c'est OK, mais quand je les supprime à la main, j'ai ce message d'erreur : "la ligne mise à jour a été modifiée ou supprimée depuis la dernière extraction des données"
la requête d'affichage est : SELECT matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
FROM [user]
GROUP BY matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
HAVING (COUNT(*) > 1)
Je n'arrive pas à supprimer en testant toutes les requêtes qui existe sur cette page ces doublons qui n'optimise pas la recherche
je vous remercie par avance
cirdec14
Messages postés3Date d'inscriptionvendredi 21 mars 2008StatutMembreDernière intervention23 octobre 2012 13 nov. 2008 à 01:14
bonjour MAXROUCOOL,
ceci fonctionne avec id indexé oui-sans doublons:
DELETE T1.id, *
FROM episodes AS T1
WHERE (((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)));
maxroucool
Messages postés44Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention28 janvier 2013 3 oct. 2008 à 15:09
Slt tba,
je me souviens avoir déjà testé cette requête qui marchait bien. Je l'ai donc mise dans mes favoris. Seulement je n'arrive pas a la refaire marcher sur la même table, et le même serveur...
J'ai une table "episodes" avec pour clé primaire "id" et le champ dont je veux supprimer les doublons est "url". Voici donc ma requête:
DELETE FROM episodes T1 WHERE id NOT IN (
SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)
et voici l'erreur que MySQL me retourne:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id not in (select min(id)
from episodes T2 where T1.url=T2.url
group by ' at line 2
Merci bp!
+++
epopoi27
Messages postés2Date d'inscriptionjeudi 6 janvier 2005StatutMembreDernière intervention10 novembre 2007 10 nov. 2007 à 16:18
bonjour,
ma version d'essai d'access 2007 me répond obstinément :
"La requête doit avoir au moins un champ de destination"
Kézako ?
Merci d'avance,
Eric
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 25 juin 2007 à 22:20
le truc, c'est que ici on supprime le doublon. le distinct lui permet effectivement de n'afficher qu'une seul ligne, mais c'est une question de performance et de coherence de ta base.
regarde pour la performance, tu as une table de 100 000 enregistrement, et chaque enregistrement posséde 4 doublons. ta base contient alors 4 fois plus de données et lorsque tu va faire des requetes sur cette table, tu va avoir une baisse de performance, une execution de ta requete plus lente puisque tu as 4 fois plus de données a parcourir!
cs_bir
Messages postés9Date d'inscriptionlundi 23 juin 2003StatutMembreDernière intervention15 mars 2009 25 juin 2007 à 13:21
19 juin 2016 à 15:31
14 juil. 2010 à 14:19
8 juil. 2009 à 13:39
Petite remarque pour les utilisateurs de SQL-Server...
En Transact-SQL il n'est pas permis d'associer un alias à la table dans laquelle on supprime un enregistrement. On est donc obligé de passer par une solution de ce type :
delete from <table>
where <clé primaire> in
(
select T1.<clé primaire>
from <table> T1, <table> T2
where T1.<champ a comparer 1> = T2.<champ a comparer 1>
and T1.<champ a comparer 2> = T2.<champ a comparer 2>
<etc.>
and T1.<clé primaire> > T2.<clé primaire>
)
9 déc. 2008 à 11:29
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.ID) Not In (SELECT min(ID)
FROM [user] T2
WHERE T1.matricule = T2.matricule
GROUP BY matricule
)
9 déc. 2008 à 11:24
j'ai executé ces requêtes mais sans aucun résultat, j'ai une erreur : syntaxe incorrecte vers 'T1' :
Voici ma requête :
DELETE T1.ID, T1.matricule, T1.prenom, T1.nom, T1.psw, T1.Modif, T1.Manager, T1.JNais, T1.MNais, T1.User_Group, T1.User_Population
FROM [user] AS T1
WHERE ((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)
la Table [user] contient des doublons, je travaille sous SQL 2005, mais j'ai juste le moteur de base de données, quand j'execute la requête pour affciher les doublons c'est OK, mais quand je les supprime à la main, j'ai ce message d'erreur : "la ligne mise à jour a été modifiée ou supprimée depuis la dernière extraction des données"
la requête d'affichage est : SELECT matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
FROM [user]
GROUP BY matricule, prenom, nom, psw, Modif, Manager, JNais, MNais, User_Group, User_Population
HAVING (COUNT(*) > 1)
Je n'arrive pas à supprimer en testant toutes les requêtes qui existe sur cette page ces doublons qui n'optimise pas la recherche
je vous remercie par avance
13 nov. 2008 à 01:14
ceci fonctionne avec id indexé oui-sans doublons:
DELETE T1.id, *
FROM episodes AS T1
WHERE (((T1.id) Not In (SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)));
3 oct. 2008 à 15:09
je me souviens avoir déjà testé cette requête qui marchait bien. Je l'ai donc mise dans mes favoris. Seulement je n'arrive pas a la refaire marcher sur la même table, et le même serveur...
J'ai une table "episodes" avec pour clé primaire "id" et le champ dont je veux supprimer les doublons est "url". Voici donc ma requête:
DELETE FROM episodes T1 WHERE id NOT IN (
SELECT min( id )
FROM episodes T2
WHERE T1.url = T2.url
GROUP BY url
)
et voici l'erreur que MySQL me retourne:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id not in (select min(id)
from episodes T2 where T1.url=T2.url
group by ' at line 2
Merci bp!
+++
10 nov. 2007 à 16:18
ma version d'essai d'access 2007 me répond obstinément :
"La requête doit avoir au moins un champ de destination"
Kézako ?
Merci d'avance,
Eric
25 juin 2007 à 22:20
regarde pour la performance, tu as une table de 100 000 enregistrement, et chaque enregistrement posséde 4 doublons. ta base contient alors 4 fois plus de données et lorsque tu va faire des requetes sur cette table, tu va avoir une baisse de performance, une execution de ta requete plus lente puisque tu as 4 fois plus de données a parcourir!
25 juin 2007 à 13:21