PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#26 Re : Migration » [Résolu] problème requête après migration de MariaDB vers postgresql » 07/03/2023 20:32:24

Il va falloir que je regarde le fenêtrage de plus près car je dois afficher des données en croisant deux tables et j'ai l'impression que le fenêtrage n'aime pas trop car je me retrouve avec autant de lignes que dans ma table sightings et si je rajoute un distinct plus que 73, sachant que certains individus n'ont qu'une seule date d'observation et que ma requête MariaDB retournaient 224 lignes

#27 Re : Migration » [Résolu] problème requête après migration de MariaDB vers postgresql » 07/03/2023 17:15:00

Je pense comprendre ce que tu veux faire avec le where mais je ne vois pas comment ça peut fonctionner.
Pour tester, j'ai utilisé une requête plus simple qui est censée afficher pour chaque individu la date de première observation et la dernière ce qui donne:

SELECT ind.name as "Name"
     , S1.date as "First observation"
     , S2.date as "Last observation"
FROM individuals as ind
inner join sightings as S1
   on S1.individual_ID = ind.individual_ID 
left join sightings as S2
   on S2.individual_ID = ind.individual_ID  
WHERE NOT EXISTS 
(SELECT 1 FROM sightings as S1b WHERE S1.date > S1b.date and S1.individual_ID = S1b.individual_ID )
order by ind.name
       , S1.date
       , S2.date
; 

Mais ça affiche X lignes par individu avec la date de première observation et toutes les autres dates d'observation
Et si je mets S2 à la place de S1b ça ne change rien, en intégrant le WHERE dans le inner join S2 non plus, pareil si je ne fais aucun inner join.
J'ai même essayé de remplacer 1 par S2.date ou s1b.date mais ça ne change rien

#28 Migration » [Résolu] problème requête après migration de MariaDB vers postgresql » 07/03/2023 11:54:14

PEREZ J.
Réponses : 9

Bonjour.
J'espère que je suis dans la bonne discussion
Après avoir galéré avec la migration de MariaDB vers POstGreSQL, j'ai voulu reprendre une requête créée en SQL approximatif MariaDB mais bien évidemment ça ne fonctionne pas.
C'est une requête qui doit permettre de récupérer les données de plusieurs tables à deux dates différentes sur une même ligne.

SELECT ind.name as "Name"
     , ind.sex as "Sex"
	 , ind.is_dead as "Dead"
     , S1.troop_ID as "Troop"
     , min(S1.date) as "First observation"
     , S1.present as "Present"
     , max(S2.date) as "Last observation"
     , S2.present as "Present"
FROM individuals as ind
inner join sightings as S1
   on S1.individual_ID = ind.individual_ID 
left join sightings as S2
   on S2.individual_ID = ind.individual_ID  
and S2.date> S1.date
group by ind.name 
       , ind.sex
       , S1.troop_id
order by ind.name
       , S1.date
       , S2.date
;

Y a t'il un moyen de contourner le problème des champs qui ne sont pas dans le  group by ?
Merci d'avance

Pied de page des forums

Propulsé par FluxBB