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

OpenOffice & LibreOffice Discussion :

Problème sur requète d'extraction de données [OpenOffice][Base de données]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 27
    Points
    27
    Par défaut Problème sur requète d'extraction de données
    Bonjour,

    J'ai 2 tables (avec des structures différentes) qui possèdent un champ commun. Je veux extraire les toutes les données apparaissant dans ce champ de la table 1 qui ne sont pas dans le champ de la table 2.
    Dans le champ de la table 1 on ne retrouve les données qu'une seule fois, dans la table 2 les données peuvent apparaître plusieurs fois.

    Jean-Jacques

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Salut,

    Ta requête va être du genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "Table1"."VALEUR" FROM  "Table1" LEFT JOIN "Table1" ON "Table1"."VALEUR" = "Table2"."VALEUR" where  "Table2"."VALEUR" is null

    Il faut une jointure gauche entre ta table1 et ta table2.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Merci pour ta réponse,

    Quand tu dis : "Il faut une jointure gauche entre ta table1 et ta table2" la jointure elle se fait bien avec le "LEFT JOIN" de la cde SQL ? ou bien faut-il créer une jointure avant le SQL ?

    J'ai testé le SQL que tu m'as prooposé :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "Printer_AOP12"."AOP_PRINTER" FROM "Printer_AOP12" LEFT JOIN "Printer_AOP12" ON "Printer_AOP12"."AOP_PRINTER" = "Suivi_mensuel2"."AOP_PRINTER" WHERE "Suivi_mensuel2"."AOP_PRINTER" IS NULL

    Table 1 : Printer_AOP12
    colonne Table 1 : AOP_PRINTER
    Table 2 : Suivi_mensuel2
    Colonne Table 2 : AOP_PRINTER

    J'ai le résultat suivant :
    Statut SQL: S0022
    Code d'erreur: -28

    Column not found: AOP_PRINTER in statement [SELECT "Printer_AOP12"."AOP_PRINTER" FROM "Printer_AOP12" LEFT JOIN "Printer_AOP12" ON "Printer_AOP12"."AOP_PRINTER" = "Suivi_mensuel2"."AOP_PRINTER" WHERE "Suivi_mensuel2"."AOP_PRINTER" IS NULL]

    Je suis sur du nom de ma colonne AOP_PRINTER. d'ailleurs quand je fais un SELECT "Printer_AOP12"."AOP_PRINTER" FROM "Printer_AOP12" ça marche correctement.

    Jean-Jacques

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Le problème vient que tu fais une jonction gauche sur la même table

    Ta requête doit plutôt être :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "Printer_AOP12"."AOP_PRINTER" FROM "Printer_AOP12" LEFT JOIN "Suivi_mensuel2" ON "Printer_AOP12"."AOP_PRINTER" = "Suivi_mensuel2"."AOP_PRINTER" WHERE "Suivi_mensuel2"."AOP_PRINTER" IS NULL
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    En effet ça fonctionne mieux avec cette syntaxe. Par contre la requête me renvoie tous les enregistrements de la table1 (et pas uniquement les enregistrements de la table 1 n'apparaissant pas dans la table 2). J'ai essayé plusieurs méthodes et à chaque fois j'ai le même résultat (sauf quand la requète plante évidemment). Je fais une requète plus ou moins équivalente en DB2 en utilsant un "where not exist" mais en openoffice ça n'a pas l'air de fonctionner.
    Je viens de tester par exemple :
    SELECT * FROM "Printer_AOP12" WHERE "Printer_AOP12"."AOP_PRINTER" NOT IN (SELECT distinct "AOP_PRINTER" FROM "Suivi_mensuel2")
    et j'ai de nouveau tous les enregistrements de la table "Printer_AOP12" alors que certains sont présent dans la table "Suivi_mensuel2".
    Est-ce qu'il peut y avoir un problème de conception de ma base ?


    Cdt

    Jean-Jacques

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    C'est étrange, car la requête donnée ici donne que les enregistrements de la table Printer_AOP12 qui ne se trouve pas dans la table Suivi_mensuel2.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    J'ai recréé mes 2 tables en définissant la colonne "AOP_PRINTER" type texte(fixe) à la place de texte(varchar). Après avoir extrait une partie des données de mes tables de base (pour ne garder que des données fixes), je récupère bien les bonnes données.

    Le problème c'est que dans mes tables complètes je n'ai pas des données de longueur fixe.

    Jean-Jacques

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2009
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    En définissant le champ de type texte(fixe) et en mettant des données de longueur variable ça marche aussi.
    Si j'ai bien compris :
    - Si on défini les champs avec type texte(varchar), la comparaison des 2 colonnes ne fonctionne pas (même avec des données de longueur fixe)
    - Si on défini les champs avec type texte(fixe), la comparaison des 2 colonnes fonctionne même avec des données de longueur variable.

    En tous les cas merci pour ton aide.

    Jean-Jacques

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

Discussions similaires

  1. Problème sur requête : erreur 1111
    Par tiger33 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/10/2006, 12h30
  2. Problèmes avec Requêtes d'extraction 2
    Par NoBru dans le forum Access
    Réponses: 4
    Dernier message: 06/06/2006, 22h05
  3. Problèmes avec Requêtes d'extraction
    Par NoBru dans le forum Access
    Réponses: 3
    Dernier message: 03/06/2006, 15h25
  4. problème sur requête ajout
    Par yoruichi93 dans le forum Access
    Réponses: 7
    Dernier message: 10/05/2006, 14h51
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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