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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 26
    Points : 23
    Points
    23

    Par défaut Utilisation d'alias sous Sqlite

    Bonjour,

    je suis entrain de migrer une base access vers SQLite mais je rencontre quelques difficultés. La requete suivante fonctionne aussi bien sous Access que Sqlite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT Affaires.*, Client.*, Contact.*, ChargeAffaire.*, Dp.*, Diuo.*, Pgc.*, Notes.*, Rappels.*
    FROM (((((((
    	Affaires 	        LEFT JOIN ChargeAffaire 	                ON Affaires.Affaires_Charge_Id = ChargeAffaire.ChargeAffaire_Id) 
    				LEFT JOIN Clients AS Client 	                ON Affaires.Affaires_Clients_Id = Client.Clients_Id) 
    				LEFT JOIN Clients AS Contact 	                ON Affaires.Affaires_Contact_Id = Contact.Clients_Id) 
    				LEFT JOIN Dp 					ON Affaires.Affaires_Dp_Id = Dp.Dp_Id) 
    				LEFT JOIN Diuo 					ON Affaires.Affaires_Diuo_Id = Diuo.Diuo_Id) 
    				LEFT JOIN Pgc 					ON Affaires.Affaires_Pgc_Id = Pgc.Pgc_Id) 
    				LEFT JOIN Notes 				ON Affaires.Affaires_Id = Notes.Note_Id_Affaire) 
    				LEFT JOIN Rappels 				ON Affaires.Affaires_Id = Rappels.Rappel_Id_Affaire
    				LEFT JOIN Detail_Visites		        ON Affaires.Affaires_Id = Detail_Visites.Detail_Visites_Affaires_Id
    WHERE (((Affaires.Affaires_Numero)='19_1003'))
    ORDER BY Affaires.Affaires_Numero, Notes.Note_Id
    Seulement dans le cas de Sqlite, les noms des colonnes ne sont correspondent pas aux alias. Lorsque j'exécute cette requête Db Browser les colonnes sont nommées Clients_xxxxx et non pas comme souhaité => sous Access les noms de colonnes sont préfixés avec l'alias, ex : Contact.Clients_Id
    Idem depuis vba, le recordset retourne les même noms que dans DB Browser.
    Auriez vous une idée pour résoudre cela ?

    Merci pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mars 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : mars 2019
    Messages : 57
    Points : 76
    Points
    76

    Par défaut

    oui je suis passé par ce probleme

    je n'ai pas trouvé de solution

    déjà j'aurais découpe ton ENORME requete en plusieures vues.

    et d'enlever l'asterique generique pour y coller le vrai nom de column

    au lieu de Client.* çà donne client.champ2 as cli_champ1 , client.champs2 as cli_champ2 . ...

    avec dbbrower tu fait un edit de la table ou tu affiche le DDL puis copier coller des nom colones dans une column excel.... puis formatage à la main.

    je sais c'est moche.

    bon courage

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    juillet 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : juillet 2011
    Messages : 251
    Points : 635
    Points
    635

    Par défaut

    Bonjour,

    Il y a bien un pragma dans SQLITE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PRAGMA full_column_names = boolean;
    mais il est déprécié.
    https://www.sqlite.org/pragma.html#toc

    Cordialement

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 26
    Points : 23
    Points
    23

    Par défaut

    Bonjour,

    merci à vous 2 pour vos réponses.
    @Engiwip : je n'ai pas compris l'intérêt des vues, je dois apprendre encore sur ce point.

    Bonne journée

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mars 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : mars 2019
    Messages : 57
    Points : 76
    Points
    76

    Par défaut

    vue == lisibilité du code SQL avant tout

    c'est comme une fonction en programmation dont le but est de decouper les problemes en sous problemes.
    bonne journée.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 4 418
    Points : 10 852
    Points
    10 852
    Billets dans le blog
    1

    Par défaut

    Absolument pas ! La vue a pour vocation première de rendre les traitements non dépendants de l'organisation physique des données conformément aux règles de Codd.

    La requête publiée dans le 1er post gagnerait en lisibilité en la débarrassant des tonnes de parenthèses inutiles

  7. #7
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mars 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : mars 2019
    Messages : 57
    Points : 76
    Points
    76

    Par défaut

    Citation Envoyé par escartefigue Voir le message
    Absolument pas ! La vue a pour vocation première de rendre les traitements non dépendants de l'organisation physique des données conformément aux règles de Codd.

    La requête publiée dans le 1er post gagnerait en lisibilité en la débarrassant des tonnes de parenthèses inutiles
    j'attends bien mais pas que


    - une vue3 de (vue1 et vue2) c'est quoi ? vue1 et vue2 ne sont pas des organisations physiques de données.

    - il se passe quoi si tu renomes une colonne la table sur laquelle s'appuie ta vue : la vue devient inactive donc elle depend physiquement de la table.

    il y a la theorie ( Codd ) et la pratique.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 4 418
    Points : 10 852
    Points
    10 852
    Billets dans le blog
    1

    Par défaut

    Si on renomme la colonne dans la table, ce qui est inhabituel comme action mais admettons, il suffit de modifier la vue en conséquence

    ex : avant
    Table1(col1, col2)
    Create Vue1 as select col1, col2 from Table1

    Après rename
    Table1(col1, colX)
    Create Vue1 as select col1, colx as col2 from table1

    Pour les traitements qui utilisent Vue1, le changement de nom de la colonne est sans impact

    D'autres intérêts existent bien sur (faciliter des requêtes, masquer des colonnes...) mais l'indépendance physique/logique est LA raison d'être des vues

  9. #9
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mars 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : mars 2019
    Messages : 57
    Points : 76
    Points
    76

    Par défaut

    j'ai compris ce que tu voulais dire , c'est juste qu'en pratique la vue est tres liée à l'organisation physique des données .

    puisqu' a la moindre solicitation physique ( modification) de ta table çà invalide ta vue .


    et puis tu peux tres bien ecrire sans creer de vue ' select col as toto from table '
    du coup creer une vue revient simplement à une facilité d'ecriture et de lisibilité .

    mais je crois qu'on est d'accord qu'on n'est pas d'accord. a+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    juin 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2009
    Messages : 26
    Points : 23
    Points
    23

    Par défaut

    Citation Envoyé par escartefigue Voir le message
    Absolument pas ! La vue a pour vocation première de rendre les traitements non dépendants de l'organisation physique des données conformément aux règles de Codd.

    La requête publiée dans le 1er post gagnerait en lisibilité en la débarrassant des tonnes de parenthèses inutiles
    Bonjour,

    j'ai viré les parenthèses

    Si vous avez un tuto à me conseiller qui explique bien les vues, je suis preneur.

    Bonne journée

  11. #11
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    18 821
    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 : 18 821
    Points : 44 019
    Points
    44 019

    Par défaut

    Citation Envoyé par cazadeis Voir le message
    Si vous avez un tuto à me conseiller qui explique bien les vues, je suis preneur.

    Bonne journée

    Lisez l'article que j'ai écrit à ce sujet :
    https://sqlpro.developpez.com/SGBDR/ReglesCodd/

    La règle 6 (formation des vues selon Codd) fait l'objet de plusieurs exemples (écrits pour MS SQL Server, SQL Lite ne sachant par gérer les vues correctement).

    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 * * * * *

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

Discussions similaires

  1. [SQLite] Utilisation avec PHP sous Debian
    Par Mil17 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/03/2008, 16h25
  2. Réponses: 3
    Dernier message: 07/05/2007, 19h57
  3. [D8] Utilisation dll D7 sous D8
    Par smyley dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 01/11/2004, 11h28
  4. Comment utiliser Site Exec sous FTP
    Par phig dans le forum Développement
    Réponses: 2
    Dernier message: 12/08/2003, 17h11
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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