|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Candidat au titre de Membre du Club
![]() |
bonjour
ça fait 1 an que je n'ai plus fait de SQL et ça se sent... j'espère avoir mis le bon titre de post ^^ ce que je souhaite faire : dans une base avec plusieurs shemas, pour un schema particulier, pour les tables de ce shema contenant une colone particuliere, compter le nombre de doublons et afficher la colonne et le resultat du count ça paraît super simple à la plupart d'entre vous j'imagine, mais je n'ai jamais fait de requètes imbriquées et ça fait 4h que je galère, donc voici ce que j'ai testé : Code :
SELECT 'owner.table1' AS TABLE_NAME,count(*) FROM owner.table1 WHERE rowid NOT IN (SELECT max(rowid) FROM owner.table1 GROUP BY 'column_key'); TABLE_NAME NB -------------------- ---------- owner.table1 26 et je voudrais faire ça sur toutes les tables du select : Code :
SELECT owner,table_name,column_name FROM ALL_TAB_COLUMNS WHERE owner = 'owner1' AND column_name = 'column_key; j'ai testé ceci mais ça ne marche pas : Code :
Code :
20 Open crsData FOR l_sql USING line.table_name; je ne sais plus quoi tester... please helppp |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 562 ![]() |
A quoi sert le USING ?
Vu que tu construit ta requête complètement sans binder, tu ne devrais faire qu'un simple
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 562 ![]() |
PS : Pour les doublons, il est plus simple de faire comme suit
Code :
SELECT COUNT(*) FROM (SELECT 1 FROM table_name GROUP BY BRCH_CODE HAVING COUNT(*) > 1) Code :
SELECT SUM(nb) FROM (SELECT COUNT(*) - 1 nb FROM table_name GROUP BY BRCH_CODE HAVING COUNT(*) > 1)
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
10
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : août 2008 Messages : 1 690 ![]() |
En associant la nouvelle "requête à la mode" et la remarque de MCM on peut tout faire en SQL :
Code :
Regarde les commentaires autour de cette approche sur le blog de Laurent Schneider notamment pour les limitations, comme les tables IOT. |
||
|
|
10
|
|
|
#5 | |||
|
Candidat au titre de Membre du Club
![]() |
Citation:
en tous cas cette fois ça fonctionne, ça me donne un beau tableau avec les noms des tables et le "nombre" de doublons. Enfin doublons, j'en sais trop rien. Ma requète initiale venait d'un autre forum qui expliquait que le champ rowid était fait pour cela. avec vos exemples de requètes, j'obtient des résultats forts différents: Code :
Pourquoi j'ai 3 résultats différents ??? je vais devoir analyser le code de ces 3 requètes sur une table qui contient peu d'enregistrements pour comprendre... |
|||
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() |
bon alors en fait...
j'ai refait ces tests sur une table avec seulement 5 enregistrements, et il m'apparaît que........ mon select et le second select de McM donnent le résultat attendu, merci McM et merci skuatamad pour votre expertise et votre temps !! Le tableau de skuatamad est très joli merci encore ! Même si je vais avoir du mal à comprendre le code... maintenant j'aimerai trouver de vraies lignes en doublon dans leur totalité, pas seulement sur un champ. j'imagine que le code va être plus gros et plus ardu, ce sera un autre sujet. résolu bravo pour votre réactivité et la qualité des réponses !!!
|
|
|
00
|
|
|
#7 | |||||
|
Expert Confirmé
![]() Inscription : août 2008 Messages : 1 690 ![]() |
Citation:
Si tu es en 11GR2 il y a listagg : Code :
Code :
String Aggregation Techniques Et choisis celle que tu comprends le mieux et pour laquelle tu as les droits de création/exécution PS : il faudra sûrement filtrer la requête dans le WITH pour exclure les PK voir les UK Regarde pour ça ALL_CONSTRAINTS |
|||||
|
|
10
|
|
|
#8 |
|
Membre chevronné
![]() |
__________________
d'avoir Pensé à voter positivement pour ceux qui vous ont aidés.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com