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

Langage SQL Discussion :

Fusionner deux requêtes


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Fusionner deux requêtes
    Bonjour,

    Pour une société de location de vélo et visites guidées de vélo, j'ai crée une requête qui liste toute les infos des locations et une requête qui liste toutes les infos des visites guidées.

    Afin de voir les disponibilités des vélo, j'ai besoin de fusionner les 2 résultats. Puis de faire un tri par date. Impossible. Ca ne marche pas.

    J'ai essayé de comprendre la commande INSERT INTO mais ca ne fonctionne pas. Meme avec 2 tables toutes simples la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table2 (dossier, tel, nom1) SELECT num_dossier, num_tel, nom FROM test1
    ne marche pas.
    Je l'ai essayé en requête et je l'ai essayé avec outils-->SQL

    Quelqu'un peut il m'éclairer ?

    Xavier

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    C'est bien de nous dire que ta requête ne fonctionne pas. Mais sans nous donner le schéma des tables, le message d'erreur retourné... bref sans aucun élément, je ne vois pas trop comment nous pouvons t'aider.

    Tatayo.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Voici les données
    Merci Tatayo pour ton retour rapide,

    Afin de tester la commande SELECT INTO, j'ai crée 2 tables basiques:

    Table1 avec les champs :num_dossier (INT), num_tel (INT), nom(CHAR)
    Table2 avec les champs :dossier (INT), tel(INT), nom1(CHAR)

    J'ai besoin que ces 2 tables n'en fassent plus qu'une (les champs de Table2 iraient sous (ou au dessus) de Table1

    J'ai testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table2 ("dossier", "tel", "nom1") SELECT num_dossier, num_tel, 'nom' FROM Table1
    Le contenu de Table1:
    num_dossier   num_tel      nom
    1                     222           tom
    2                      243          max
    Le contenu de Table2:
    dossier            tel              nom1
    4                     111             xav
    Ca ne marche pas. Réponse: :
    Table not found in statement [INSERT INTO Table2]

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Visiblement la table en question n'est pas trouvée... Une erreur dans le nom de la table ? Un problème de droits ?

    Par contre je ne comprends pas l'utilité les quotes (simple et doubles) dans la requête.

    Tatayo.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai le meme problème quand je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table2 (dossier, tel, nom1) SELECT num_dossier, num_tel, nom FROM Table1

    Pourtant je ne me trompe pas dans le nom de la table. C'est bien Table2. J'utilise Base d'openOffice 4.1.1

    Quelqu'un comprends ce qu'il se passe ?

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Peux être que la base open office est sensible à la casse, auquel cas il faut bien vérifier les noms des tables au niveau des minuscules/majuscules

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Le message d'erreur est 1: Table not found in statement [INSERT INTO Table2]
    J'ai donc vérifié 10 fois Table2 ...

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Postez le DDL de création des tables

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Histoire d'éliminer un problème de droit, est-ce qu'un insert simple (INSERT INTO ... VALUE) fonctionne ?

    Est-ce qu'OpenOffice gère la syntaxe INSERT INTO... SELECT ?

    Tatayo.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 088
    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 : 10 088
    Points : 38 393
    Points
    38 393
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Histoire d'éliminer un problème de droit, est-ce qu'un insert simple (INSERT INTO ... VALUE) fonctionne ?

    Est-ce qu'OpenOffice gère la syntaxe INSERT INTO... SELECT ?

    Tatayo.
    Le message d'erreur serait différent, je pense plutôt à des quotes simples ou doubles dans le create table ou bien la table n'est pas dans la bonne base...

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table1 VALUES (4, 44, 'toto')
    ne marche pas.

    c'est quoi le DDL ?

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Citation Envoyé par xavier_92 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table1 VALUES (4, 44, 'toto')
    ne marche pas.
    Mais encore ? Quel est le message d'erreur ici ?

    Citation Envoyé par xavier_92 Voir le message
    c'est quoi le DDL ?
    [/quote]
    Le code SQL de création des tables:
    Tatayo.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    bonjour tatayo

    merci de suivre mon mystere !

    toujours le meme message. il ne trouve pas la table.

    ou puis je trouver le ddl ?
    je n'ai pa crée les tables avec du code mais avec le logiciel.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Est-ce que les tables sont dans un schéma particulier ?
    Si c'est le cas il faut peut-être préfixer le nom de la table avec celui du schéma en question.

    Tatayo.

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    curieux, j'ai voulu tester
    j'ai donc créé une base de données avec deux tables de structure identiques (données différentes) et ce avec les assistants
    ensuite je suis passé à la requête : requête + créer une requête en mode SQL
    effectivement même erreur
    une petite recherche internet (merci ) et je suis tombé sur ça
    Citation Envoyé par extrait
    ... an INSERT statement changes the contents of the database, and, unlike a Query, does not READ a database and return a result set . . . a group of rows.
    So, to CHANGE a database, within OpenOffice Base . . . ( rather than return a result set ) . . . the command is issued from the Menu: Tools -> SQL...
    dont acte je passe donc par outil/SQL
    et tape mon SQL INSERT INTO "TABLE1" SELECT ... FROM "TABLE2"même problème jusqu'à ce que je teste la sensibilité à la casse du nom des tables (mes noms de champs étant en majuscules je n'ai pas vérifié cette partie)
    INSERT INTO "Table1" SELECT ... FROM "Table2"et là ça fonctionne
    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

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour Sergio,

    Vous avez de la chance que ca marche. Pour s'assurer d'éviter le problème de casse, j'ai renommé mes tables: table1 et table2.
    Je vais dans outils/SQL (c'est deja ce que je faisais) et je tape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table2 (dossier, tel, nom1) SELECT num_dossier, num_tel, nom FROM table1
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table2 SELECT num_dossier, num_tel, nom FROM table1
    et j'ai toujours le meme message d'erreur:

    1: Table not found in statement [INSERT INTO table2]

    J'aimerai vous transmettre ma base (qui est ridicule avec 2 tables) mais je n'arrive pas à joindre un fichier ici. (fichier odb non valide)

    incroyable!

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Re,

    il faut y mettre des guillemets "

    j'ai refait rapidement le tout (ce qui excusera les fautes dans les noms de champs dans une nouvelle base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into "Table1" ("DOSSIER","TELPHONE","NOM") SELECT "DOSSIER","TELPHONE","NOM" FROM "Table12"
    je suggère donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO "table2" ("dossier", "tel", "nom1") SELECT "num_dossier", "num_tel", "nom" FROM "table1"
    petit détail : il faut que les champs de table2 puissent contenir leurs équivalents , mais cela semble évident

    [edit] pour transmettre la base au cas où, il faut mettre le fichier odb dans un zip et envoyer ce dernier
    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

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2015
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Allélouya ! Ca marche ! Juste des guillemets !

    Merci Sergio.

    Peut être pourriez vous m'aider dans ma 2eme étape.

    En réalité, j'ai 2 requêtes :
    • La 1er liste toutes les reservations de locations de vélo.

    • La 2eme liste toutes les reservations de visites guidées en vélo.


    Afin de connaitre les disponibilités de mes vélos j'ai besoin d'insérer les résultats de l'une dans l'autre. La commande INSERT INTO aurait été bien. Mais je ne souhaite pas passer par la commande option/SQL. J'aimerai que ca se fasse automatiquement.

    Savez vous comment faire ?

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    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 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par xavier_92 Voir le message
    Savez vous comment faire ?
    certainement mais pas avec Open Office Base et c'est pas avec des intitulés de table tel que fourni que je vais faire quelque chose de valable.
    La commande INSERT INTO aurait été bien.
    Non, il m'étonnait d'ailleurs que le but était d'insérer les enregistrements d'un table dans une autre

    Le mot clé c'est : UNION
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     SELECT "num_dossier", "num_tel", "nom" FROM "table1"
    UNION
     SELECT "num_dossier", "num_tel", "nom" FROM "table2"
    sauf que je ne sais pas si OpenOffice Base permet les union !
    [Edit] il semblerait que oui en passant par des vues mais avec OpenOffice Base (que j'aborde pour la première fois) je ne sais pas faire
    en tout cas une chose est sure OpenOffice Base est frustrante pour quelqu'un comme moi

    P.S.
    Pour une société de location de vélo et visites guidées de vélo,
    j'ai sous le coude, en maintenance, tout un logiciel Delphi7+Firebird de gestion de location de ski que pendant un moment j'ai pensé appliqué au vélo.
    le fait qu'il soit un peu vieillot et difficile à maintenir m'a retenu (ainsi que trop de boulot autre), de plus je suis un très mauvais commercial
    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

Discussions similaires

  1. Possible de « fusionner » deux requêtes?
    Par grafik.muzik dans le forum Débuter
    Réponses: 11
    Dernier message: 07/01/2009, 05h08
  2. Fusionner les champs de deux requêtes
    Par wulfram dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/05/2008, 10h20
  3. Requête pour fusionner deux colonnes
    Par david71 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/12/2007, 21h44
  4. [windev11] Fusionner deux requêtes?
    Par judor31 dans le forum WinDev
    Réponses: 4
    Dernier message: 15/11/2007, 19h35
  5. [MySQL] Fusionner deux requêtes
    Par jpascal dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/12/2006, 02h51

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