• User Newbie

    Utilizzo di WHERE in una query con INNER JOIN

    Salve a tutti. Mi sto dilettando da un po' con php e mysql e sto cercando di utilizzarlo per snellire il mio lavoro d'ufficio. Ma mi sono intoppato su un punto... speriamo sappiate aiutarmi! 🙂 Allora...

    Ho un tabella "interventi_tecnici" dove registro i dati di interventi di manutenzione effettuati dal mio ufficio. In ogni record memorizzo un ID_luogo, che fa riferimento a un'altra tabella con gli idirizzi dei vari luoghi dove facciamo manutenzione.
    Per calcolare e stampare a video quanti interventi sono stati fatti in ogni diverso luogo ho usato questa query:

    SELECT int_tec.ID_luogo, COUNT(int_tec.ID_luogo) AS n_int_tec, luoghi.indirizzo FROM interventi_tecnici AS int_tec INNER JOIN luoghi ON int_tec.ID_luogo = luoghi.ID GROUP BY int_tec.ID_luogo

    ... che funziona, anche se non sono sicuro se sia ottimizzata bene.
    Il mio problema però è un altro: in ogni record memorizzo anche la data d'intervento... se volessi selezionare solo il numero di interventi fatti nei vari luoghi in un determinato periodo di tempo, come potrei fare? Sto provando con dei WHERE del tipo

    WHERE data_intervento BETWEEN '$from' AND '$to'

    ma ottengo sempre un errore di sintassi. Siccome con una query di prova il WHERE appena scritto funziona, credo che commetto un errore nel posizionare il WHERE all'interno della query, oppure sbaglio ad utilizzarlo come opzione.

    Sapete aiutarmi?
    Grazie a tutti e scusate per eventuali strafalcioni da neofita :gthi:


  • ModSenior

    Ciao SkyWatcher,

    Sarebbe meglio postati l'errore, e la query lanciata.
    Comunque puoi fare:

    
    SELECT int_tec.ID_luogo, COUNT(int_tec.ID_luogo) AS n_int_tec, luoghi.indirizzo FROM interventi_tecnici AS int_tec INNER JOIN luoghi ON int_tec.ID_luogo = luoghi.ID WHERE luogo = '$luogo' AND data_intervento > '$start' AND data_intervento < '$to' GROUP BY int_tec.ID_luogo
    
    

  • User Newbie

    Ci provo, grazie per ora. 😉

    FUNZIONA!!! Mitico! Ti ringrazio moltissimo!

    Sto cercando di capire l'errore... dov'è che sbagliavo?


  • User Attivo

    Ciao,
    non hai postato la query completa quindi è difficile dirti cosa sbagliavi 🙂
    Probabilmente avevi messo il WHERE dopo il GROUP BY o prima della INNER JOIN

    Alessandro


  • User Newbie

    Ciao Alessandro, avevo fatto tutte le prove possibili sulla posizione del WHERE, ma nulla. Siccome ottenevo un errore di sintassi, credo che sbagliavo nel mettere gli apici... utilizzavo il metodo tipo

    ("SELECT * FROM $tabella WHERE campo= ' " .$var. " ' ");

    però è strano lo stesso, perchè di solito mi funziona :bho:

    comunque con la sintassi tipo

    ("SELECT * FROM $tabella WHERE campo= ' $var ' ");

    funziona... chissà, molto probabile che non vedevo qualche evidente errore data la lunga permanenza davanti al pc! ognitanto sarebbe bene prendersi una pausa:fumato:

    Ciao e grazie


  • ModSenior

    Anche la prima sintassi da te postata è corretta, quindi il problema non era quello.
    Prego. 😉