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

Discussione: AND e OR

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209

    AND e OR

    Chiedo scusa agli amministratori, probabilmente è il posto sbagliato, ma io in questo momento sto scrivendo questo programma in java....
    Dunque, se io in java devo fare un operazione matematica del tipo:

    1*5+6*2

    il risultato sarebbe 17 perchè la priorità è sulla moltiplicazione e poi la somma, se volessi fare la somma dovrei inserire le parentesi:

    1*(5+6)*2 = 22

    Terminata questa premessa, vorrei chiedervi una cosa....
    Quando inserisco il linguaggio SQL in JSP, le condizioni in OR o AND hanno priorità diverse o vengono eseguite sequenzialmente?
    Io dovrei far sì che la mia query faccia una cosa del genere:

    SELECT + from tabellaA INNER JOIN tabellaB WHERE
    (elemento1 = elementoX OR elemento2 = elementoY) AND (elemento3 = elementoT OR elemento4 = elementoZ) ....

    E' possibile fare una cosa del genere?

    Grazie della risposta.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: AND e OR

    Originariamente inviato da dtomasini
    Quando inserisco il linguaggio SQL in JSP, le condizioni in OR o AND hanno priorità diverse o vengono eseguite sequenzialmente?
    In SQL la AND ha priorità maggiore rispetto alla OR. Esattamente come succede in C, C++, Java ecc...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Ok. Grazie!
    ma un'altra cosa non mi è chiara....
    come è possibile fare una cosa del genere?

    SELECT + from tabellaA INNER JOIN tabellaB WHERE
    (elemento1 = elementoX OR elemento2 = elementoY) AND (elemento3 = elementoT OR elemento4 = elementoZ) ....

    Nel senso, come è possibile unire due blocchi di condizioni di OR con un AND?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ad occhio, comincerei con il dire che la sintassi di quella inner join è sbagliata:

    SELECT campo/i FROM tabella_1 INNER JOIN tabella_2 ON (condizioni per la join)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Infatti la mia stringa sql è molto più complessa. qui l aprima parte l'ho solo semplificata
    non so come fare la seconda parte quella delle condizioni where...
    basta inserire anche qui le parentesi che funziona?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    se è solo quello il problema, sì.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    ho provato e mi è uscito questo...

    SELECT scheda.id_partita, scheda.id_atleta, SUM( scheda.bat_dpos ) , SUM( scheda.bat_pos ) , SUM( scheda.bat_neg ) , SUM( scheda.bat_dneg ) , SUM( scheda.ric_dpos ) , SUM( scheda.ric_neg ) , SUM( scheda.ric_sbarra ) , SUM( scheda.ric_dneg ) , SUM( scheda.att_dpos ) , SUM( scheda.att_pos ) , SUM( scheda.att_neg ) , SUM( scheda.att_muro ) , SUM( scheda.att_dneg ) , SUM( scheda.muro_dpos ) , SUM( scheda.muro_neg ) , SUM( scheda.muro_dneg ) , SUM( scheda.err_pall ) , scheda.giocato, partita . * , atleta . *
    FROM scheda
    INNER JOIN atleta ON scheda.id_atleta = atleta.id_atleta
    INNER JOIN partita ON scheda.id_partita = partita.id_partita
    WHERE (

    scheda.id_partita =19
    OR scheda.id_partita =20
    OR 0
    )
    AND (
    scheda.id_atleta = DOL_VAL
    OR scheda.id_atleta = TRO_LAU
    OR scheda.id_atleta = SEG_GIO
    OR scheda.id_atleta = PIC_LIS
    OR scheda.id_atleta = PAS_ARI
    OR scheda.id_atleta = NIC_ILA
    OR scheda.id_atleta = PED_CAM
    OR scheda.id_atleta = FAC_MAR
    OR scheda.id_atleta = MIL_FED
    OR scheda.id_atleta = RAI_GAI
    OR scheda.id_atleta = LOC_ROB
    OR scheda.id_atleta = CRO_MAR
    OR 0
    )
    GROUP BY scheda.id_atleta
    ORDER BY scheda.giocato DESC , atleta.ruolo

    e mi da errore:

    #1054 - Colonna sconosciuta 'DOL_VAL' in 'where clause'

    Ma i valori sono giusti!! e i campi sono scritti correttamente.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Niente come non detto... non avevo tenuto in considerazione che la chiave è una stringa....

    Grazie a tutti... alla prossima!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mi sa che ti sei perso qualche apice negli "=" ? Poi, a che serve l' OR 0 che c'è alla fine di ogni parentesi?. Visto che tra l'altro stai verificando se un campo (e sempre quello) assuma un valore in un insieme di valori, ti consiglio l'uso di "IN"

    WHERE tuo_campo IN ('ciao', 'miao', 'bau',...)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    l' OR 0 che inserisco alla fine serve perchè quei dati possono cambiare, nel senso che possono essere molti o essercene solo uno... l'OR 0 mi consente di terminare la condizione where, è una regola sql che ho letto nella parte di php....
    Per quanto riguarda l'ultima tua considerazoine credo di aver capito male, comunque:
    scheda.id_atleta = TRO_LAU

    TRO_LAU

    è un valore trovato in un'array. in quest'array vengono inserite le chiavi che l'utente seleziona precedentemente in un'apposito form...

    spero di spiegarmi meglio con il codice:

    Codice PHP:
    try {
                        
    // Load the JDBC driver
                        
    String driverName "org.gjt.mm.mysql.Driver"// MySQL MM JDBC driver
                        
    Class.forName(driverName);
                    
                        
    // Create a connection to the database
                        
    String serverName "";
                        
    String mydatabase "";
                        
    String url "jdbc:mysql://" serverName +  "/" mydatabase// a JDBC url
                        
    String username "";
                        
    String password "";
                        
    connection DriverManager.getConnection(urlusernamepassword);
                        
                        
    String[] partita = new String[100];
                        
    String[] atleta = new String[100];
                         
                        
    String verifica null;
                        
    partita request.getParameterValues("idPartita");
                        
                        
    atleta request.getParameterValues("idAtleta");
                        
    verifica atleta[0];        
        
                        
    String sql "SELECT scheda.id_partita, scheda.id_atleta,"
                        
    " SUM(scheda.bat_dpos),"
                        
    " SUM(scheda.bat_pos),"
                        
    " SUM(scheda.bat_neg),"
                        
    " SUM(scheda.bat_dneg),"
                        
    " SUM(scheda.ric_dpos),"
                        
    " SUM(scheda.ric_neg),"
                        
    " SUM(scheda.ric_sbarra),"
                        
    " SUM(scheda.ric_dneg),"
                        
    " SUM(scheda.att_dpos),"
                        
    " SUM(scheda.att_pos),"
                        
    " SUM(scheda.att_neg),"
                        
    " SUM(scheda.att_muro),"
                        
    " SUM(scheda.att_dneg),"
                        
    " SUM(scheda.muro_dpos),"
                        
    " SUM(scheda.muro_neg),"
                        
    " SUM(scheda.muro_dneg),"
                        
    " SUM(scheda.err_pall),"
                        
    " scheda.giocato,"
                        
    " partita.*, atleta.*"
                        
    " FROM scheda INNER JOIN atleta ON scheda.id_atleta = atleta.id_atleta"
                        
    " INNER JOIN partita ON scheda.id_partita = partita.id_partita WHERE (";
                        
                        
    String sqlPartita "SELECT * FROM partita WHERE";
                        
                        for(
    int i=0i<partita.lengthi++) {
                            if (!
    partita[i].equals("")) {
                              
    sql sql " scheda.id_partita=" partita[i] + " OR";
                              
    sqlPartita sqlPartita " id_partita=" partita[i] + " OR";
                            }
                        }

                        
    sql sql " 0)";
                        
    sql sql " AND (";                    
                            
                        for(
    int i=0i<atleta.lengthi++) {
                            if (!
    atleta[i].equals("")) {
                              
    sql sql " scheda.id_atleta=\'" atleta[i] + "\' OR";
                            }
                        }
                                            
                        
    sql sql " 0)";
                        
                        
    sqlPartita sqlPartita " 0";
                        
    sql sql " GROUP BY scheda.id_atleta ORDER BY scheda.giocato DESC, atleta.ruolo";
                        
    sqlPartita sqlPartita " ORDER BY data";
                        
                        
    //out.println(sql + "
    ");
                        //out.println(sqlPartita + "
    "); 

    Pero' la condizione IN non la conoscevo... mi informerò

    Grazie!

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.