Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: doppia Query

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    doppia Query

    Ciao a tutti ho bisogno di aiuto

    devo eseguire alla pressione di un button una doppia query non riesco a capire come fare,vi spiego,devo fare una selezione su un combobox che mi seleziona le righe del database solo di un certo operatore ,per poi filtrarle in base a un range di due date Da 01-08-2013 a 31-08.2013.Spero di essermi spiegato,ho provato i due blocchi uno per volta e funzionano ma insieme niente.


    codice:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
                    try{
                        
                        
                         
                        String sql1 = "SELECT * FROM Buste where operatore = ?";
                        pst=conn.prepareStatement(sql1);
                        pst.setString(1, combo_op.getSelectedItem().toString());
                        rs= pst.executeQuery();
                    
                    
                    
                 
                
    
                        String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText(); 
                        String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
            
                        
    
                        String sql = "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";
                        pst=conn.prepareStatement(sql);
                        rs= pst.executeQuery();
                        tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                        
    
                        sv.somma_Colonna_tabella(tabella_busta, 2, txt_media);
                
                     }catch(Exception  e){
                        JOptionPane.showMessageDialog(null,e);
                     }

  2. #2
    1)Queste due query devono essere indipendenti?
    2)Oppure il risultato delle prima query devi filtrarlo con le date?
    Perché se ricadiamo nel secondo caso allora non devi fare così.
    Puoi fare in tre modi diversi
    a) fai tutto in una sola query
    b) metti il risultato delle prima query in un vector o in una List a quel punto filtri per date
    c) ti costruisci una tabella temporanea in essa metterai i dati della prima rilevazione e poi fai una seconda query su quella tabella temporanea e ti ricavi i dati che vuoi avere dopo di ché la cancelli con una drop.

    se ricadiamo nel primo caso allora mi son perso qualcosa.

    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Originariamente inviato da schumy2000
    1)Queste due query devono essere indipendenti?
    2)Oppure il risultato delle prima query devi filtrarlo con le date?
    Perché se ricadiamo nel secondo caso allora non devi fare così.
    Puoi fare in tre modi diversi
    a) fai tutto in una sola query
    b) metti il risultato delle prima query in un vector o in una List a quel punto filtri per date
    c) ti costruisci una tabella temporanea in essa metterai i dati della prima rilevazione e poi fai una seconda query su quella tabella temporanea e ti ricavi i dati che vuoi avere dopo di ché la cancelli con una drop.

    se ricadiamo nel primo caso allora mi son perso qualcosa.


    Esatto la numero 2

    Ho provato a farlo in una sola query ma non so come farlo ho provato a fare cosi ma mi da errore


    String sql1 = "SELECT * FROM Buste where operatore = ?"+ "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";
    non riesco a trovare da nessuna parte come posso concatenare due query

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ho provato a fare Union ma non va ne l'una ne l'altra





    codice:
    try{
                        
                        String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText(); 
                        String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         
                        String sql1 = " SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'Union SELECT * FROM Buste where operatore = ? ";
                        pst=conn.prepareStatement(sql1);
                        pst.setString(1, combo_op.getSelectedItem().toString());
                        rs= pst.executeQuery();
                    
                    
                    
                 
                
    
                        /*    String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                         * String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         * 
                         * 
                         * 
                         * String sql = "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";
                         * pst=conn.prepareStatement(sql);
                         * rs= pst.executeQuery();
                         * tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));*/
                        
    
                        sv.somma_Colonna_tabella(tabella_busta, 2, txt_media);
                
                     }catch(Exception  e){
                        JOptionPane.showMessageDialog(null,e);
                     }

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Nio74
    Esatto la numero 2

    Ho provato a farlo in una sola query ma non so come farlo ho provato a fare cosi ma mi da errore




    non riesco a trovare da nessuna parte come posso concatenare due query
    Quella sintassi è completamente sbagliata e non ha alcun senso...

    Mai sentito parlare di AND?

    "SELECT * FROM Buste where operatore = ?"
    +
    "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";

    codice:
    SELECT * FROM Buste WHERE (operatore = ?) AND (data BETWEEN ? AND ?)
    Ovviamente usa setXxx di PreparedStatement per riempire i ?, non sostituirli concatenando le stringhe!

    Originariamente inviato da Nio74
    Ho provato a fare Union ma non va ne l'una ne l'altra
    La UNION non fa quello che ti aspetti...

    Se la prima query ti da come risultato A e B e la seconda query ti da A, B, C, D, facendone la UNION otterrai (se non mi sbaglio, A, B, A, B, C, D).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Incubo,mi filtra solo la prima query ma non la seconda

    codice:
      
                        String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText(); 
                        String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         
                        String sql1 = "SELECT * FROM Buste WHERE (operatore = ?) AND (data BETWEEN ? AND ?)";
                        pst=conn.prepareStatement(sql1);
                        pst.setString(1, combo_op.getSelectedItem().toString());
                        pst.setString(2,val1);
                        pst.setString(3,val2);
                        rs=pst.executeQuery();
                        tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ho provato a fare una prova del genere e selezionando solo una data senza BETWEEN funziona


    codice:
    String sql = "SELECT * FROM Buste WHERE (operatore = ?) AND (data = ?)";
                        pst=conn.prepareStatement(sql);
                        pst.setString(1, combo_op.getSelectedItem().toString());
                        pst.setString(2,((JTextField)data_da.getDateEditor().getUiComponent()).getText());
                        //pst.setString(3,((JTextField)data_a.getDateEditor().getUiComponent()).getText());
                        rs=pst.executeQuery();
                        tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                        pst.close();
                        rs.close();

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    C'è un problema di fondo ho provato il codice ma mi filtra solo la data A periodo mentre la jtextfield Periodo da è come fosse inesistente



    codice:
    String sql = "SELECT * FROM Buste WHERE  (data BETWEEN ? AND ?)";
                          pst=conn.prepareStatement(sql);
                          // pst.setString(1, combo_op.getSelectedItem().toString());
                          pst.setString(1,((JTextField)data_da.getDateEditor().getUiComponent()).getText());
                          pst.setString(2,((JTextField)data_a.getDateEditor().getUiComponent()).getText());
                          rs=pst.executeQuery();
                          tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                          pst.close();
                          rs.close();

    Ho provato anche il vecchio codice e anche questo ha lo stesso problema



    codice:
    /* String val1 =  ((JTextField)data_da.getDateEditor().getUiComponent()).getText();
                         * String val2 =   ((JTextField)data_a.getDateEditor().getUiComponent()).getText();
                         * 
                         * 
                         * 
                         * String sql = "SELECT * FROM Buste where data between '"+val1+"' and '"+val2+"'";
                         * pst=conn.prepareStatement(sql);
                         * rs= pst.executeQuery();
                         * tabella_busta.setModel(DbUtils.resultSetToTableModel(rs));
                         */
    Immagini allegate Immagini allegate

  9. #9
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Sul database di che tipo sono le colonne che contengono le tue date?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Originariamente inviato da Alex'87
    Sul database di che tipo sono le colonne che contengono le tue date?
    DATETIME

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.