1. #1
    Membre à l'essai
    Inscrit en
    avril 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 25
    Points : 15
    Points
    15

    Par défaut Adapter Requete Postgresql a Sqlite

    Bonjour a tous,

    voici une requete que j'utilise depuis un moment sur Postgresql/Postgis et qui fonctionne a merveille.
    Pour des raisons de logistique, je suis aujourd'hui obligé de passer par sqlite mais je n'arrive pas a adapter cette requete.
    Dans un premier, le problème était lier a WITH CTE AS car ma version de sqlite (3.1.7) n'acceptait pas les Common Table Expression.
    Ce problème a été résolu avec la version 3.21.
    Maintenant je crois que ca bloque au niveau du OVER (partion by) mais je ne peus pas m'en sortir.

    Je précise que je ne suis aucunnement développeur, mais un Géomètre/SIGiste...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH CTE AS (
    	SELECT id, geom, line, type, SUM(CASE WHEN line = 1 THEN 1 ELSE 0 END) OVER (partition by type order by id) as ligne
    	from public."726"
    )
    INSERT INTO public."726_Line"
    SELECT ST_MakeLine(geom ORDER BY id ASC) AS geom, type
    FROM CTE
    where line <> 0
    GROUP BY type, ligne;
    UPDATE public."726_Line" SET laenge = st_length(geom)

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 840
    Points : 41 636
    Points
    41 636
    Billets dans le blog
    1

    Par défaut

    Les fonctions de fenêtrage ne sont pas supporté par SQL lite...
    A lire :
    https://www2.sqlite.org/cvstrac/wiki...ticalFunctions

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 058
    Points : 20 694
    Points
    20 694
    Billets dans le blog
    9

    Par défaut

    Bonjour,

    je croyais avoir déjà posté une réponse mais il s'avère que non ! mauvaise manip de ma part je pense.

    En résumé je demandais la structure des tables concernées et l'objectif à atteindre. (jeu d'essai, résultat attendu)
    en effet je présume que le SQL donné est une tentative en SQLLite (à cause de la CTE) mais contenant encore une partie PostGres d'où le flou.

    Si je m'en tient à la CTE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT id, geom, line, type, SUM(CASE WHEN line = 1 THEN 1 ELSE 0 END) OVER (partition by type order by id) as ligne
    	from public."726"
    ce SQL ne donnerait-il pas le même résultat ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id,type,SUM(1) From public."726" WHERE line>0 GROOUP BY id,Type
    ensuite la syntaxe du INSERT INTO me pose problème quelles sont les colonnes de "726_line", à quoi correspond ST_MakeLine(geom ORDER BY id ASC)
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  4. #4
    Membre à l'essai
    Inscrit en
    avril 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 25
    Points : 15
    Points
    15

    Par défaut

    Bonjour et merci pour vos réponses...

    Moi aussi j'ai du faire une fausse manip parceque je n'ais pas été informé par mail d'une réponse a mon sujet ... et je m'en rend compte un mois plus tard

    Bref, ce n'est pas que j'ai la flemme de m'expliquer, mais je poste ici l'origine de ma requete, se qui facilitera grandement la comprehension:
    https://www.developpez.net/forums/d1...eurs-colonnes/

    En fait, cette requete est celle que j'utilise sous postresql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH CTE AS (
    	SELECT id, geom, line, type, SUM(CASE WHEN line = 1 THEN 1 ELSE 0 END) OVER (partition by type order by id) as ligne
    	from public."726"
    )
    INSERT INTO public."726_Line"
    SELECT ST_MakeLine(geom ORDER BY id ASC) AS geom, type
    FROM CTE
    where line <> 0
    GROUP BY type, ligne;
    UPDATE public."726_Line" SET laenge = st_length(geom)
    et Le resultat de cette requete n'est pas celui attendu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id,type,SUM(1) From "726" WHERE line>0 GROUP BY id,Type

    Je poste également un jeu d'essai. La table 726 est celle dont je dispose et 726_line le résultat attendu.
    myDB.zip

    Merci beaucoup de vous pencher sur mon cas.

    Jean

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 058
    Points : 20 694
    Points
    20 694
    Billets dans le blog
    9

    Par défaut

    Bonjour,

    Près ce tour d'horizon, je viens de voir que les deux trucs sur lequel je butais (ST_MakeLine,St_Length) sont des fonctions géospatiales de PostGresSQL ce qui bien évidemment pose un gros soucis avec SQLite je n'ai jamais eu à faire avec ce genre de données
    Déjà il faut certainement ajouter à SQLite le module Spatialite ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  6. #6
    Membre à l'essai
    Inscrit en
    avril 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 25
    Points : 15
    Points
    15

    Par défaut

    Merci Sergio,

    mais en fait avec ces fonctions je n'ais personnellement pas de problèmes. Spatialite est installé. En fait j'utilise Qgis et les fonctions Spatial Postgis et Spatialite sont quasiment identiques.

    Mon problème est bien "du pur SQL" ..lite...

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 058
    Points : 20 694
    Points
    20 694
    Billets dans le blog
    9

    Par défaut

    Bonjour,

    Je maitrise encore très mal les fonctions de fenêtrage et donc j'ai du mal à comprendre l'utilisation de celle-ci dans la CTE.
    Et comme SQLite n'a pas de fonction de fenêtrage .. dur dur de faire une réponse
    De plus SQLite n'est pour moi qu'un SGBDR "utilitaire" pour des tables temporaires locales et Spatialite m'est carrément une inconnue

    alors proposer une solution se passant des fonctions de fenêtrage joker car au delà de mes compétences
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
    J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
    Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous

  8. #8
    Membre à l'essai
    Inscrit en
    avril 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : avril 2008
    Messages : 25
    Points : 15
    Points
    15

    Par défaut

    Merci beaucoup quand meme de ton aide!

    Le probleme a été reglé ici: https://www.developpez.net/forums/d1...s/#post9830376

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.10] Zend_Tool configure db-adapter et Postgresql
    Par ZIED dans le forum Zend_Db
    Réponses: 3
    Dernier message: 03/07/2012, 16h53
  2. requete Postgresql en requête Oracle
    Par wiam26 dans le forum Oracle
    Réponses: 5
    Dernier message: 22/09/2006, 18h07
  3. requete postgresql en c++
    Par ogre dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/12/2003, 22h55
  4. Retour de requete postgresql / Shell Script
    Par doohan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 26/06/2003, 18h07
  5. Retour de requete postgresql / Shell Script
    Par doohan dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo