IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQLite Discussion :

Adapter Requete Postgresql a Sqlite


Sujet :

SQLite

  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 bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 759
    Points : 52 540
    Points
    52 540
    Billets dans le blog
    5
    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...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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 ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  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 retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  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 Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 18h07
  5. Retour de requete postgresql / Shell Script
    Par doohan dans le forum PostgreSQL
    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