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

 Firebird Discussion :

2 questions !


Sujet :

Firebird

  1. #21
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par lepatantpato Voir le message
    Je joins la requête
    essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT DISTINCT  
    ETAT.NUMERO ,  
    ETAT.PRODUIT_ID,
    PFOURNISSEUR.CODE,
    PRODUIT.DESIGNATION,
    SORTIE.DLU,
    FOURNISSEUR.NOM, 
    SORTIE.DATE
     
    FROM  ETAT JOIN PFOURNISSEUR ON  
    JOIN PRODUIT ON ETAT.PRODUIT_ID=PRODUIT.PRODUIT_ID
    JOIN SORTIE ON  SORTIE.NUMERO=ETAT.NUMERO 
    JOIN FOURNISSEUR ON ETAT.FOURNISSEUR_ID=FOURNISSEUR.FOURNISSEUR_ID
    LEFT JOIN FIN ON ETAT.NUMERO =  FIN.NUMERO
    WHERE  PFOURNISSEUR.CODE IN   ('125500','789120','997788','123789')
    AND ETAT.NUMERO  IS NULL
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  2. #22
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut heu...
    Heu, finalement, qu'est-ce que je dois faire ?

    A
    exit
    B
    quit
    C
    commit
    quit
    D commit
    exit
    E
    Adieu camarade
    la bonne réponse est ?

    Lépatantpato

  3. #23
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut houla !
    A P.Makowski

    Avec ton code, ma requête passe de 8 secondes à... 0 seconde ! Merci; c'est vraiment top.
    Cdt
    LépatantPato

  4. #24
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut snif...
    Bonjour à tous
    et en particulier à P. Makowski

    Je nage en plein mystère.... Ton code qui , hier, corrigeait le mien était parfait, et me convenait très bien. Mais aujourd'hui je rencontre avec le même code un problème que je ne comprends pas:
    L'erreur rencontrée est : Token unknown à la ligne 11, JOIN.
    Je ne comprends pas l'erreur, d'autant plus que cela fonctionnait hier...
    Voyez-vous où se situe le problème ?
    (j'ai utilisé Flamerobin et isql).
    Merci
    Lépatantpato

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Ligne 10 du code il manque la condition de jointure entre ETAT et PFOURNISSEUR . cela m'avait échappé déjà dans ma proposition de refonte avec des JOIN

    Code ligne 10 : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM  ETAT JOIN PFOURNISSEUR ON  ETAT.FOURNISSEUR_ID= FOURNISSEUR.FOURNISSEUR_ID
    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. #26
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut colonne inconnue !
    Merci SergioMaster!

    mais j'ai un message d'erreur sur la ligne 10
    Fournisseur.Fournisseur_ID : column unknown (et non token unknown, pour une fois). Or, bien entendu, cette colonne existe. Je suppose que l'erreur vient de plus bas, mais je ne vois toujours pas.
    Aucune référence au fichier Fournisseur n'est faite, d'ailleurs.
    La ligne 13 ressemble à la 10, mais bon, je suis perdu.
    Cdt
    LépatantPato

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    désolé , un mauvais copier coller
    La relation doit se faire sur la table PFOURNISSEUR et non FOURNISSEUR
    Maintenant quelle est cette relation entre les 2 ? y en a t'il une , pas facile de le déduire de ton sql de départ . En relisant attentivement ,je m’aperçois que c'est mon premier Copier/Coller qui a du a un moment (j'ai pour habitude de mettre une ligne par jointure , la jointure étant en début de ligne)

    Code ton SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND PFOURNISSEUR.PRODUIT_ID=PRODUIT.PRODUIT_ID
    donc le join était en plus 'mal' placé

    avec l'amélioration de makowski (grand merci pour la leçon Quit vs Exit) cela donnerai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    SELECT DISTINCT  
    ETAT.NUMERO ,  
    ETAT.PRODUIT_ID,
    PFOURNISSEUR.CODE,
    PRODUIT.DESIGNATION,
    SORTIE.DLU,
    FOURNISSEUR.NOM, 
    SORTIE.DATE
     
    FROM  ETAT  
    JOIN PRODUIT ON ETAT.PRODUIT_ID=PRODUIT.PRODUIT_ID
    JOIN PFOURNISSEUR ON PFOURNISSEUR.PRODUIT_ID=PRODUIT.PRODUIT_ID
    JOIN SORTIE ON  SORTIE.NUMERO=ETAT.NUMERO 
    JOIN FOURNISSEUR ON ETAT.FOURNISSEUR_ID=FOURNISSEUR.FOURNISSEUR_ID
    LEFT JOIN FIN ON ETAT.NUMERO =  FIN.NUMERO
    WHERE  PFOURNISSEUR.CODE IN   ('125500','789120','997788','123789')
    AND ETAT.NUMERO  IS NULL
    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. #28
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut encore moi
    Bonjour
    J’ai apporté le correctif. Je n’ai plus de message d'erreur ! mais par contre aucun résultat.
    J’explique ici le but poursuivi, en essayant d’être clair, mais j’ai conscience de ne pas l’être tant que ça…
    En tout cas, merci de m’aider.
    Cdt.
    Lépatantpato

    En fait, dans mon code de départ :
    Mon but est d’extraire de ETAT tout NUMERO qui n’est pas dans FIN.
    18 WHERE ETAT.NUMERO NOT IN (SELECT FIN.NUMERO FROM FIN)

    Puis en ligne 19 j’ai le numéro du produit correspondant (dont je veux le nom, PRODUIT.DESIGNATION)
    19 AND ETAT.PRODUIT_ID=PRODUIT.PRODUIT_ID

    Ensuite, la ligne 20 me donne
    20 AND SORTIE.NUMERO=ETAT.NUMERO
    Le lien avec le fichier SORTIE me donne SORTIE.DATE et SORTIE.DLU

    La ligne 21
    21 AND PFOURNISSEUR.PRODUIT_ID=PRODUIT.PRODUIT_ID
    Donne le lien avec PFOURNISSEUR qui va permettre le critère utilisé en 23

    la ligne 22
    Donne le FOURNISSEUR dont je désire le nom, FOURNISSEUR.

    Et la ligne 23
    AND PFOURNISSEUR.CODE IN ('125500','789120','997788','123789');

    Permet de chercher les valeurs désirées.

  9. #29
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Pardon j'avais mal lu et donc fait une grossière erreur

    c'est plutot quelque chose du genre de ce qui suit, ma première ne pouvait que ne rien renvoyer, sauf s'il y avait des valeurs null dans ETAT.NUMERO, ce qui n'était pas ce qui était recherché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT DISTINCT  
    ETAT.NUMERO ,  
    ETAT.PRODUIT_ID,
    PFOURNISSEUR.CODE,
    PRODUIT.DESIGNATION,
    SORTIE.DLU,
    FOURNISSEUR.NOM, 
    SORTIE.DATE
     
    FROM  ETAT  
    JOIN PRODUIT ON ETAT.PRODUIT_ID=PRODUIT.PRODUIT_ID
    JOIN PFOURNISSEUR ON PFOURNISSEUR.PRODUIT_ID=PRODUIT.PRODUIT_ID
    JOIN SORTIE ON  SORTIE.NUMERO=ETAT.NUMERO 
    JOIN FOURNISSEUR ON ETAT.FOURNISSEUR_ID=FOURNISSEUR.FOURNISSEUR_ID
    WHERE  PFOURNISSEUR.CODE IN   ('125500','789120','997788','123789')
    AND NOT EXISTS (SELECT 1 FROM FIN WHERE ETAT.NUMERO = FIN.NUMERO)
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  10. #30
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut et encore merci
    à Philippe Makowski et SergioMaster et Barbibulle

    Merci.
    Tout marche ok
    et en plus, je crois avoir compris !
    cdt
    LépatantPato

  11. #31
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    un Backup fait un sweep donc ....

    non
    un backup avec gbak sans l'option -g parcours tous les enregistrements et déclenche donc un garbage collect, qui n'est pas exactement la même chose qu'un sweep
    un sweep fait un peu plus que seulement le garbage collect
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  12. #32
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut Précision
    Bonjour à tous
    2 choses:
    - 1 j'avais indiqué que la vitesse d'accès à ma base était très rapide, mais en fait je m'étais trompé
    - 2 ma requête modifiée par PM fonctionne très bien, mais la durée de traitement, par rapport à la mienne, reste la même. Je suppose qu'il n'y a pas moyen de l'optimiser.

    Cdt
    Lépatantpato

  13. #33
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Citation Envoyé par lepatantpato Voir le message
    - 2 ma requête modifiée par PM fonctionne très bien, mais la durée de traitement, par rapport à la mienne, reste la même. Je suppose qu'il n'y a pas moyen de l'optimiser.
    peut être que si
    mais cherchez ce qui n'existe pas est toujours pénible
    pour optimiser, il faudrait voir le plan d'abord et la structure des tables et des index
    c'est quoi la clé primaire de ETAT ?

    Citation Envoyé par lepatantpato Voir le message
    - 1 j'avais indiqué que la vitesse d'accès à ma base était très rapide, mais en fait je m'étais trompé
    ça veut dire quoi ça ?
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  14. #34
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    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 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par makowski Voir le message
    un backup avec gbak sans l'option -g parcours tous les enregistrements et déclenche donc un garbage collect, qui n'est pas exactement la même chose qu'un sweep
    un sweep fait un peu plus que seulement le garbage collect
    ça m'apprendra a être simpliste

    pour continuer dans cette voie peut m'expliquer pourquoi il vaut mieux faire un Commit plutôt qu'un rollback après un Select ? bien qu'ayant une idée de la chose , j'aimerais confirmation
    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

  15. #35
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    pour ça le mieux est d'aller lire Pierre (http://www.ibphoenix.com/resources/d...search/doc_369)

    mais en vite fait, un commit coûte moins de ressources qu'un rollback
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  16. #36
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut bonsoir
    Bonsoir tout le monde

    Pour répondre à PM :
    - Je ne crois pas qu'il y ait une clé primaire

    cdt
    Lépatantpato

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  2. Divers questions
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 06/08/2002, 21h57
  3. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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