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

JDBC Java Discussion :

Remplir une table à partir du résultat d'une requête SQL (sous JAVA)


Sujet :

JDBC Java

  1. #1
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut Remplir une table à partir du résultat d'une requête SQL (sous JAVA)
    Salut tout le monde,
    Je voudrais savoir comment je peux remplir une table d'une BD MySQL à partir d'une autre table.
    J'exécute la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SELECT date,r_host,count(r_host) from essai group by r_host
     order by count(r_host) desc
    et puis je veux remplir à partir du résultat de cette requête une autre table qui contient 3 champs "date, r_host, nb_visites".

    Pourriez vous m'aider
    Merci d'avance
    The great glory is not in never falling but in rising every time we fall.

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    salut,
    quand vous recupérez votre resultat de la requete selection,tu execute pour chaque ligne une requete d'insertion pour l'autre table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String sql="SELECT date,r_host,count(r_host) as nb from essai group by r_host order by count(r_host) desc";
    ResultSet rs=statement.executeQuery(sql);
    while (rs.next){
    String sqlinsert="insert into table values('"+rs.getDate("date")+"','"+rs.getString("r_host")+"',"+rs.getInt("nb")+")";
    int i=statement1.executeUpdate(sqlinsert);}

  3. #3
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ou alors simplement en requtee SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table VALUES (SELECT * FROM table2)
    enfin en adaptant la requete à ce que tu veux vraiment ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  4. #4
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    Salut voila ce que j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try {
              Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "root");
              Statement instruction = connexion.createStatement();                   
              String sql_insert="insert into top_user (date,username,volume) 
    values(SELECT date,username,count(username) as compte from proxy
     group by username order by count(username) desc)";
             instruction.executeUpdate(sql_insert);
     
            }
     catch (Exception e) 
           {
                 e.printStackTrace();
            }
    Mais il y a une erreur qui apparaît
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
    You have an error in your SQL syntax; check the manual that corresponds to
     your MySQL server version for the right syntax to use near 'SELECT
     date,username,count(username) as compte from proxy group by username orde' at line 1
    The great glory is not in never falling but in rising every time we fall.

  5. #5
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    essaie d'effectuer ta requete direct dans la bdd pour voir si elle marche et la corriger le cas échéant ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  6. #6
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    J'ai essayé mais ça ne marche pas
    The great glory is not in never falling but in rising every time we fall.

  7. #7
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    J'ai essayé ce code aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    String sql_select = "SELECT date,username,count(username) as compte from proxy group by username order by count(username) desc" ;
              ResultSet resultat = instruction.executeQuery(sql_select);
               while (resultat.next())
                {
     
               System.out.println("Date     : "+ resultat.getDate("date"));
               System.out.println("username : "+ resultat.getString("username"));
               System.out.println("Compte   : "+ resultat.getInt("compte"));
               System.out.println("---------------------------------------");          
               instruction.executeUpdate("insert into top_user (date,username,volume) values('2006-08-09','user1','200')");
     
                }
    Mais cette erreur aparaît:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    java.sql.SQLException: Operation not allowed after ResultSet closed
    The great glory is not in never falling but in rising every time we fall.

  8. #8
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 24
    Points
    24
    Par défaut
    oui c normal, parceque vous avez utilisé le meme statement pour deux resultset en meme temps.
    faut declarer un autre statement et l'utiliser dans la requete d'insertion

  9. #9
    Membre habitué Avatar de condor_01
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    294
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 294
    Points : 133
    Points
    133
    Par défaut
    Merci beaucoup,
    Le problème est résolu.
    A bientôt.
    The great glory is not in never falling but in rising every time we fall.

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

Discussions similaires

  1. UPDATE d'une table à partir des résultats d'une requête
    Par pascal_06 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/12/2013, 15h08
  2. Alimenter une table à partir du résultat d'une requete
    Par flateur18 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 05/04/2011, 10h24
  3. [AC-97] Création d'une table à partir des résultats d'une requete analyse croisée
    Par docjo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2009, 21h46
  4. Mise à jour d'une table à partir du résultat d'une requête
    Par zoharcryss dans le forum Langage SQL
    Réponses: 12
    Dernier message: 18/08/2009, 15h33
  5. Remplir une table avec le résultat d'une instruction SQL
    Par jbeu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/09/2007, 23h49

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