|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Comment supprimer doublons s/ inner join [ Access / Requêtes ] (810mcu)
Informations & options pour cette discussion
|
mardi 12 août 2008 à 13:03:34 |
Comment supprimer doublons s/ inner join

810mcu
|
Bonjour à tous, Base Access2000 + D6 + TADOquery En exécutant une recherche avec ce qui suit SELECT GRUME_H_NIOKI_.*, HIST_GRUME_H_NIOKI_.* FROM GRUME_H_NIOKI_ inner JOIN HIST_GRUME_H_NIOKI_ ON GRUME_H_NIOKI_.ID_GRUME_H = HIST_GRUME_H_NIOKI_.ID_GRUME_H Where GRUME_H_NIOKI_.n_abat Like 458 Ok il le fait, mais alors avec autant de doublons que des registres qui se trouvent ds la table HIST_GRUME_H_NIOKI_ Qq sait comment faire pour enlever tous ces doublons, SVP. Merci 810mcu
|
|
|
|
mardi 12 août 2008 à 13:32:48 |
Re : Comment supprimer doublons s/ inner join

810mcu
|
Tj moi,
pour mieux comprendre le sujet
Table1
GRUME_H_NIOKI_
Champs
ID_GRUME_H,
N_ABAT,
...
Table2
HIST_GRUME_H_NIOKI_
Champs
ID_HIST_GRUNE_H,
ID_GRUME_H,
POSITION,
DATA_BE
...
la liaison GRUME_H_NIOKI_.ID_GRUME_H = HIST_GRUME_H_NIOKI_.ID_GRUME_H
merci a vs tous
|
|
|
|
mardi 12 août 2008 à 14:44:25 |
Re : Comment supprimer doublons s/ inner join

casy
|
Comprend pas bien ton problème. Avec INNER JOIN, tu ne dois normalement avoir que les enregistrements des 2 tables qui sont liés entre-eux. Si tu as des doublons c'est qu'ils sont surrement en doublons dans les tables. Au pire essaye avec un SELECT DISTINCT ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
|
|
mardi 12 août 2008 à 18:45:27 |
Re : Comment supprimer doublons s/ inner join

810mcu
|
Salut casy,
SELECT DISTINCT, ne passeras pas a cause de (SELECT GRUME_H_NIOKI_.*, HIST_GRUME_H_NIOKI_.* )
tout en sachant que
table1 GRUME_H_NIOKI_ n’as que 1 registre avec
Champs
ID_GRUME_H,
N_ABAT,
...
et que
table2 HIST_GRUME_H_NIOKI_ elle une multitude de registre avec ID_GRUME_H,
Champs
ID_HIST_GRUNE_H,
ID_GRUME_H,
POSITION,
DATA_BE
...
1 - l’idée est de listé (DBGrid, query) le seul registre de la
table GRUME_H_NIOKI_(Table1)
du champ N_ABAT,
via la procédure de recherche (Where GRUME_H_NIOKI_.n_abat Like 458)
2 - mais aussi de pouvoir faire des recherches sur des champs de la table HIST_GRUME_H_NIOKI_ (Table2)
en réinitialisant la fonction
tout en gardent l’affichage stand art
(l’idée est de listé (DBGrid, query) le seul registre de la )
au final
query = champs Table1 + Table2
possibilité de recherche dans tous les champs des 2 tables et
faire en sorte de n’afficher que celui de la table1 (ou il n’y as pas de possibilité de doublons)
je pense que c’est un peut plus clair
Merci
|
|
|
|
mardi 12 août 2008 à 19:05:31 |
Re : Comment supprimer doublons s/ inner join

casy
|
Donc si je comprend bien, une requette avec le critère de sélection ne renverra systématiquement qu'un seul enregistrement sur la table 1. Par contre, sur la table 2, tu peux avoir multitude d'enregistrements liés à l'unique de la table 1. A partir du moment ou tu renvoie des champs de la table 2, ta requette globale avec jointure te renverra donc autant de résultats que tu aura d'enregistrements liés dans la table 2 avec à chaque fois, pour les champs de a table 1, les valeurs dupliquées corresponds à l'unique enregistrement. Ceci est le fonctionnement même de la jointure et est parfaitement logique. Il n'y a donc pas de doublons (sauf si tu en as dans la table 2) Peut-etre faut-il que tu rajoute des critères de sélection dans le where concernant la table 2 Ou alors tu ne renvoie que les champs de la table 1 avec à ce moment là un SELECT DISTINCT et tu ne devrais avoir qu'un seul résultat dans ce cas. ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
|
|
mardi 12 août 2008 à 19:29:11 |
Re : Comment supprimer doublons s/ inner join

810mcu
|
et bien j’ai déjà essayé cela aussi
SELECT GRUME_H_NIOKI_.*, HIST_GRUME_H_NIOKI_.*
FROM GRUME_H_NIOKI_
inner JOIN HIST_GRUME_H_NIOKI_
ON GRUME_H_NIOKI_.ID_GRUME_H = HIST_GRUME_H_NIOKI_.ID_GRUME_H
where
HIST_GRUME_H_NIOKI_.ID_GRUME_H = GRUME_H_NIOKI_.ID_GRUME_H
and
GRUME_H_NIOKI_.n_abat
Like 460
autant de doublons que de registre ds la table2
meme que j'ai aussi renversé
where
GRUME_H_NIOKI_.ID_GRUME_H = HIST_GRUME_H_NIOKI_.ID_GRUME_H
et rien a faire...!!!
|
|
|
|
mardi 12 août 2008 à 19:39:59 |
Re : Comment supprimer doublons s/ inner join

casy
|
Oui, mais c'est normal. La condition que tu as ajouter dans le where ne sert à rien puisque c'est celle de la jointure et c'est cette dernière qui l'assure déjà. Donc ta requette maintenant est identique à la précédente. Tel que tu pose ton problème, c'est le fonctionnement normal de la jointure que tu obtiens. Et dans ce sens là, il n'y a pas de doublons. Si tu as trop de résultats, il faut que tu filtre les enregistrements de la table 2 sur d'autres critères (pas l'id de ta jointure, mais d'autres colonnes de ta table 2) ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
|
|
jeudi 14 août 2008 à 00:44:50 |
Re : Comment supprimer doublons s/ inner join

810mcu
|
Tu as tout a fait raison Casy,
ma Table2 avait qq problèmes, je me suis rendu compte…
Des fois on focalise sur qq chose et le problème est ailleurs
2eme volet, là très franchement ne n’est aucune idée, et je ne sais pas si cella est possible de le faire via SQL(query) !!!
J’ai un peut compléter mon query, que voici
[CODE]SELECT GRUME_H_NIOKI_.ID_GRUME_H,
GRUME_H_NIOKI_.N_ABAT,
GRUME_H_NIOKI_.L_ABAT,
GRUME_H_NIOKI_.ESSENCE,
GRUME_H_NIOKI_.D_SAVE,
GRUME_H_NIOKI_.B_SAVE,
GRUME_H_NIOKI_.CORRESPOND,
GRUME_H_NIOKI_.PERMIS,
GRUME_H_NIOKI_.CHANTIER,
GRUME_H_NIOKI_.N_EXPORT,
Count(HIST_GRUME_H_NIOKI_.ID_HIST_GRUNE_H) AS Nombre FROM GRUME_H_NIOKI_
INNER JOIN HIST_GRUME_H_NIOKI_ ON GRUME_H_NIOKI_.ID_GRUME_H = HIST_GRUME_H_NIOKI_.ID_GRUME_H
Where
HIST_GRUME_H_NIOKI_.POSITION
Like 'GARE'
GROUP BY GRUME_H_NIOKI_.ID_GRUME_H,
GRUME_H_NIOKI_.N_ABAT,
GRUME_H_NIOKI_.L_ABAT,
GRUME_H_NIOKI_.ESSENCE,
GRUME_H_NIOKI_.D_SAVE,
GRUME_H_NIOKI_.B_SAVE,
GRUME_H_NIOKI_.CORRESPOND,
GRUME_H_NIOKI_.PERMIS,
GRUME_H_NIOKI_.CHANTIER,
GRUME_H_NIOKI_.N_EXPORT[/CODE]
Jusque là ok exécution parfaite, je me retrouve avec
1 ligne Table1
et n lignes Table2
Est-ce possible tj avec le même query, parcourir tous les lignes Table1 d’aller a la dernière ligne de la Table2(correspondante ligne Table1) est procéder a la vérification de ces données,
[CODE]Where
HIST_GRUME_H_NIOKI_.POSITION
Like 'GARE'[/CODE]
Merci...,
|
|
|
|
jeudi 14 août 2008 à 10:10:05 |
Re : Comment supprimer doublons s/ inner join

810mcu
|
Bonjour,
Oui avec une boucle ( while ou for) cela serais possible, oui boulot d'un programme.
Mais d’un autre cote cela serait aussi possible via un (query, SQL) ???
Quelque chose du genre
Qu'appelles-tu 'vérification de ces données' ?
-Table1 GRUME_H_NIOKI_.ID_GRUME_H,
--Table2 sélectionne les lignes avec ID_GRUME_H
---Va a la dernière ligne est vérifie si celle si
----(HIST_GRUME_H_NIOKI_.POSITION égal 'GARE')
-----Si oui le query le garde
-----Si non le query le rejette
-Suivant...
|
|
|
|
dimanche 17 août 2008 à 21:47:08 |
Re : Comment supprimer doublons s/ inner join

casy
|
"...dernière ligne de la Table2..."
Le terme 'dernière ligne' ne veut rien dire en terme de base de données En fait il faut que tu précise dans ta requette un ordre de tri (ORDER BY) sur un ou plusieurs champs (une date par exemple) pour pouvoir ensuite parler effectivement de première ou dernière ligne.
Ensuite si tu tri ton résultat selon un ordre, et que tu veux la dernière ligne, tu peux tout aussi bien trier dans l'ordre inverse et vouloir donc par conséquent la première ligne. Dans cette hypothèse, tu peux faire en sorte avec une requette style SELECT TOP 1 de ne retourner alors que le tout premier résultat.
Donc faire une requette SELECT * ... ORDER BY ... de sorte à ce que la ligne qui t'interresse soit retournée en premier. Modifier ta requette en SELECT TOP1 * ... ORDER BY, pour ne retourner finalement que cette ligne qui t'interresse.
"...parcourir tous les lignes Table1 d?aller a la dernière ligne de la Table2(correspondante ligne Table1)..." Oui effectivement avec une boucle. Il faut faire une première requette sur la table 1, puis avec une boucle sur chacun des résultats de la première requette, faire la seconde comme je viens de te l'expliquer.
Le faire en une seule requette ? Je dirais qu'à priori cela doit etre possible, mais un peu plus compliquer. Je ne peux pas te donner de solutions comme ça. Il me faudrait faire des tests au préalable et je n'ai pas de données sous la main.
L'idée serait de remplacer, je pense, dans la jointure, la table 2 par le résultat de la requette sur cette table.
---- Sevyc64 (alias Casy) ----
|
|
|
Cette discussion est classé dans : doublons, inner, hist, grume, nioki
Répondre à ce message
Sujets en rapport avec ce message
éléiminatio des doublons : instruction delete avec jointure [ par overider ]
Bonjour à tousje souhaite eliminer les doublons dans un table.J'ai d'abord rechercher les doublons (merci a kechia pour sa requette) puis je les ai st
probleme de champ ntext avec group by [ par nashouille ]
Bonjour a tousdans une requete avec une sous requete d'agregation, l'extraction d'un champ ntext est impossible.sql server me retourne ce messageServe
Doublons [ par piep14 ]
Bonjour, j'aimerais savoir s'il est possible d'extraire directement dans la base de données tous les doublons ! Merci le forum
pb requette doublons [ par skiso ]
cette requette me sort des doublons :SELECT * FROM agences a inner join annonces b on a.AGENCE = b.AGENCE WHERE a.commune='$com'comment faire pour ne
Suppression doublons... [ par billut ]
salut a tous, voila je vous explique vite faitca fais quelques temps que je galere sur une requete toute simple, mais la jen peux plus, jai cherché su
Requete sans doublons [ par aztcaLISS ]
Salut, Je voudrais faire une requete sur ma base de données. J'ai une Table qui contient 3 champs: Test1, Test2, Test3.Je voudrais obtenir une nouve
affichage doublons [ par EFFACEUR ]
Je voudrais afficher tt les lignes ayant un doublons pour pouvoir verifier lequel supprimerSELECT nom as valeur,COUNT(*) FROM table GROUP BY valeur HA
Doublons dans INNER JOIN [ par leviz ]
Hello! Voila mon problème : J'ai deux tables : TblCollectList et TblCollectNotes</fo
INNER JOIN sur 3 tables [ par citt ]
Bonjour, Je fait une requete SQL sur 4 tables pour avoir le nombre d'element en tous Ex : table : ecrou (environ 200 enreg) table : ecrou_petit (envir
Grouper les doublons [ par pkmnlio ]
Bonjour,Je suis entrain de develloper un site en ASP, et j'ai un petit probleme avec une de mes requetes de selection.J'ai une liste de Dvds dans une
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|