Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1085 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PostGrSQL SELECT DISTINCT un truc pas clair SVP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PostGrSQL SELECT DISTINCT un truc pas clair SVP

n°2354271
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2020 à 10:06:25  profilanswer
 

Hello
soit une table dans laquelle j'ai un champ (champ_1) qui contient des valeurs qui ont des doublons
 
quand je fais cette requete:

Code :
  1. SELECT DISTINCT champ_1 WHERE bla bla


pas de problème j'ai une seule occurence de champ_1 qui ensuite est ordonnée par rapport à ce que je demande sur champ_2
Maintenant, je ne peux traiter QUE champ_1
 
Si je veux faire

Code :
  1. SELECT DISTINCT champ_1, champ_2 WHERE bla bla


(par exemple)
ci dessus donc, j'ai deux champs dans mon SELECT mais JE PERDS mon DISTINCT, du coup, tous les champ_1 en doublons sont renvoyés.
Auriez-vous une aide parce que la doc postgresql n'est pas claire à ce sujet.
 


---------------
http://www.ypikay.com
mood
Publicité
Posté le 23-05-2020 à 10:06:25  profilanswer
 

n°2354283
Farian
Posté le 23-05-2020 à 14:18:57  profilanswer
 

Bonjour ! Dans la deuxième requête, c'est le couple (champ_1, champ2) qui est unique.
 
Posons la question autrement : quelles sont les données à récupérer, on verra bien comment c'est possible de les obtenir.
 
Je précise ma pensée : Si on a plusieurs champ_2 pour un même champ_1, je ne vois pas comment récupérer (champ_1, champ_2) en ayant champ_1 unique, sans lui indiquer comment choisir.


Message édité par Farian le 23-05-2020 à 14:23:21

---------------
On n'est jamais très fort pour ce calcul !
n°2354291
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2020 à 17:20:09  profilanswer
 

D'accord
donc voila je cherche toutes les pages contenant des liens vers telle ou telle page.
exemple ci-dessous
http://www.ypikay.fr/ou_est_mon_li [...] velobs.com  
 
en gros la structure de la table  
UNIQUE adresse_a+lien_b  /  adresse_a  /  lien_b  / date
quand je trouve une adresse_a qui contient le lien_b je crée le couple unique adresse_a+lien_b et je rentre adresse_a et lien_b
(ce sont les deux colonnes que l'on voit)
maintenant on voit que la page http://nobipho.hypotheses.org renvoie 4 résultats  
si je fais SELECT adresse_a cette adresse n'apparaitra plus qu'une fois ( plus propre et c'est ce que je voudrais ) mais je ne pourrai gérer que cette colonne.
je voudrais faire SELECT DISTINCT adresse_a, lien_b et je sais que ce n'est pas possible ou du moins ça ne retourne rien.
 
MERCI
 


---------------
http://www.ypikay.com
n°2354292
dede_sav
Posté le 23-05-2020 à 17:51:27  profilanswer
 

Regarde du coté des group by ?  
 
Sinon, je suis preneur d'un exemple avec des données et le resultat souhaité ;)
 
dd

n°2354294
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2020 à 17:56:58  profilanswer
 

l'exemple est dans le lien ci dessus.
Merci.


---------------
http://www.ypikay.com
n°2354307
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2020 à 23:52:50  profilanswer
 

J'essaye de faire un tableau ici, c'est pas gagné
l'exemple donc est ici (je cherche toutes les pages de ma BdD qui pointent vers nouvelobs.com)
ça me retourne un tableau, première ligne est la page scannée, deuxième ligne est l'adresse trouvée qui contient nouvelobs.com
maintenant, pour chaque page scannée, je voudrais une seule ligne avec en regard, tous les enregistrements de liens trouvés
http://www.ypikay.fr/ou_est_mon_li [...] velobs.com

Code :
  1. http://www.editionsladecouverte.fr . . https://www.nouvelobs.com/idees/202 [...] le-mbembe- . . 2020-05-22 07:03:14.582000
  2. http://www.editionsladecouverte.fr . . https://www.nouvelobs.com/debat/202 [...] t-ressembl . . 2020-05-22 07:03:14.578000
  3. https://www.telerama.fr/medias/ce-q [...] a-surveill . . https://www.nouvelobs.com/monde/202 [...] s-en-itali . . 2020-05-22 02:38:25.139000
  4. http://nobipho.hypotheses.org . . https://www.nouvelobs.com/societe/2 [...] ni-femme-1 . . 2020-05-22 01:46:25.878000
  5. http://nobipho.hypotheses.org  . . . . https://www.nouvelobs.com/societe/2 [...] ni-garcon- . . 2020-05-22 01:46:25.877000
  6. http://nobipho.hypotheses.org . . . .  https://www.nouvelobs.com/lifestyle [...] t-les-drag . . 2020-05-22 01:46:25.877000
  7. http://nobipho.hypotheses.org . . . .  https://www.nouvelobs.com/edito/201 [...] e-remise-e . . 2020-05-22 01:46:25.877000
  8. http://emm.newsbrief.eu/NewsBrief/ [...] atest.html . . .  . https://www.nouvelobs.com/topnews/2 [...] terrements . . 2020-05-22 00:03:36.966000
  9. http://fr.wikipedia.org/wiki/Maria [...] _en_France . . .  . https://www.nouvelobs.com/edito/201 [...] -mariage-p . . 2020-05-21 15:15:05.041000


au lieu de l'exemple ci dessous (3 liens troucés sur nobipho, 3 liens différents donc 3 lignes dans mon tableau)

Code :
  1. http://nobipho.hypotheses.org . . https://www.nouvelobs.com/societe/2 [...] ni-femme-1 . . 2020-05-22 01:46:25.878000
  2. http://nobipho.hypotheses.org . . https://www.nouvelobs.com/societe/2 [...] ni-garcon- . . 2020-05-22 01:46:25.877000
  3. http://nobipho.hypotheses.org . . https://www.nouvelobs.com/lifestyle [...] t-les-drag . . 2020-05-22 01:46:25.877000
  4. http://nobipho.hypotheses.org . . https://www.nouvelobs.com/edito/201 [...] e-remise-e . . 2020-05-22 01:46:25.877000


je voudrais 1 ligne avec la page nobipho et ensuite, une ligne ou un enregistrement qui retourne tous les liens trouvés, mais je voudrais que ça le fasse pour chaque page

Code :
  1. http://nobipho.hypotheses.org . https://www.nouvelobs.com/societe/2 [...] ni-femme-1 . . 2020-05-22 01:46:25.878000
  2. . .  . .  . .  . .  . .  . .  . . https://www.nouvelobs.com/societe/2 [...] ni-garcon- . . 2020-05-22 01:46:25.877000
  3. . .  . .  . .  . .  . .  . .  . . https://www.nouvelobs.com/lifestyle [...] t-les-drag . . 2020-05-22 01:46:25.877000
  4. . .  . .  . .  . .  . .  . .  . . https://www.nouvelobs.com/edito/201 [...] e-remise-e . . 2020-05-22 01:46:25.877000



---------------
http://www.ypikay.com
n°2354309
Farian
Posté le 24-05-2020 à 05:47:37  profilanswer
 

Bonjour !
 
Ok, je vois mieux. Je ne sais pas si c'est réalisable en SQL, mais en PL SQL dans une procédure stockée, cela l'est assez facilement, en créant une fonction qui prend une valeur de champ1 en paramètre et renvoie une chaine contenant les liens trouvés pour cette valeur.
 
En tous cas, je le ferais comme ça, vu que je ne vois pas trop comment le faire autrement :)


---------------
On n'est jamais très fort pour ce calcul !
n°2354310
el muchach​o
Comfortably Numb
Posté le 24-05-2020 à 08:15:23  profilanswer
 

En effet, il faut utiliser les extensions de Postgres de manipulation de chaînes de caractère.
https://www.postgresqltutorial.com/ [...] -function/
 
Mais surtout la vraie question est: est-ce souhaitable de stocker les données comme ça ?
Parce que tu t'interdis à l'avenir de retrouver efficacement les données du champ2. La moindre recherche sur champ2 devient un cauchemar qui fera un scan et sera donc lent. Tu perds une grande partie de l'intérêt d'un SGBD.
 
Alors qu'en stockant les couples (lien1, lien2), même s'il y a des répétitions de lien1, une petite fonction avec un simple GROUPBY et les fonctions de manipulation de caractère permettent de retourner le résultat que tu veux rapidement tout en préservant la facilité à requêter la base dans tous les sens.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  PostGrSQL SELECT DISTINCT un truc pas clair SVP

 

Sujets relatifs
SQL DISTINCT requete spéciale (POSTGRESQL)Passer les guillemets dans un SELECT Potgresql #%@* WTF !!
MYSQL : update et select en une seule requête[Javascript] Désélectionner un choix d'un select
Stockage de mots de passe dans une BDD (en clair ?)[résolu] Truc de dingue : float écrits avec un . ou une ,
recupere les mot du select et textareaCréation d'un "select" personnalisé
[MySQL] Combiner un select classique et un count()exécuter requete avec select row
Plus de sujets relatifs à : PostGrSQL SELECT DISTINCT un truc pas clair SVP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR