Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310

    SELECT solo se data_unixtime è in un certo anno

    visit_date contiene date in formato unixtime.
    Ora, nella funzione passo un parametro $Year, tipo 2007, e vorrei estrarre tutte le righe della tabella dove visit_date è nel 2007

    Codice PHP:
    SELECT FROM table WHERE visit_date >= 01_gennaio_2007_unixtime and visit_date <= 31_12_dicembre_2007 
    esiste una maniera per NON fare questo >= / <=?

    una funzione di mysql dove passando data_unixtime e anno mi dica se quella data sta in quell'anno...

    spero di essermi spiegato
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select * from `table`
    where from_unixtime(visit_date,"%Y") = 2007

  3. #3
    Ma perché vuoi cambiare la query? Quella suggerita da nicola è corretta da un ponto di vista formale, ma penalizzante come prestazioni, e se deve scansionare parecchie righe la differenza può essere notevole.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  4. #4
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da nicola75ss
    codice:
    select * from `table`
    where from_unixtime(visit_date,"%Y") = 2007
    grande, funziona.

    Originariamente inviato da webus
    Ma perché vuoi cambiare la query? Quella suggerita da nicola è corretta da un ponto di vista formale, ma penalizzante come prestazioni, e se deve scansionare parecchie righe la differenza può essere notevole.
    preferisci la mia? Perchè dici che quella di Nicola è penalizzante?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  5. #5
    perché impiega una funzione nella ricerca, forzando così la scansione fisica della tabella riga per riga.
    L'unico modo per evitare che questa operazione si ripeta ogni volta sarebbe che venga eseguita così spesso da farla restare sempre nella cache.

    Nella tua originale invece non ci sarebbe accesso alla tabella ma, in caso il campo data sia indicizzato, solo all'indice. Ovviamente la differenza sarà poco visibile per tabelle piccole, qualche migliaio di record, ma diventa sensibile con l'aumentare dei numeri.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  6. #6
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da webus
    perché impiega una funzione nella ricerca, forzando così la scansione fisica della tabella riga per riga.
    L'unico modo per evitare che questa operazione si ripeta ogni volta sarebbe che venga eseguita così spesso da farla restare sempre nella cache.

    Nella tua originale invece non ci sarebbe accesso alla tabella ma, in caso il campo data sia indicizzato, solo all'indice. Ovviamente la differenza sarà poco visibile per tabelle piccole, qualche migliaio di record, ma diventa sensibile con l'aumentare dei numeri.
    ho una tabella da 30.000 records
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  7. #7
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    Originariamente inviato da nicola75ss
    codice:
    select * from `table`
    where from_unixtime(visit_date,"%Y") = 2007
    Codice PHP:
    SELECT table3.nomecampo,
    SUM(quantita) AS totale,
    SUM(opzione1*quantita) AS opzione1,
    SUM(opzione2*quantita) AS opzione2,
    SUM(opzione3*quantita) AS opzione3
    SUM((opzion1*quantita)+(opzione2*quantita)+(opzione3*quantita)) AS totale_prezzo
    FROM table1 LEFT JOIN table3 USING 
    (productid)
    LEFT JOIN table2 USING (fieldid)
    WHERE table2.field='product_group' AND FROM_UNIXTIME(miadata'%Y') = $Year
    GROUP BY table3
    .nomecampo
    Dove $Year è il parametro che uso per cercare in un certo anno.

    Se io invece volessi cercare per nomecampo e per tutti i mesi in un determinato anno, esiste una maniera per fare tutto in una query?

    Visto che qua sono riuscito a farlo per tutto l'anno, mi sono chiesto se forse esisteva una maniera (con una query) di fare per tutti i mesi di un anno..
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  8. #8
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    up
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

  9. #9
    Originariamente inviato da blekm

    Se io invece volessi cercare per nomecampo e per tutti i mesi in un determinato anno, esiste una maniera per fare tutto in una query?

    Visto che qua sono riuscito a farlo per tutto l'anno, mi sono chiesto se forse esisteva una maniera (con una query) di fare per tutti i mesi di un anno..
    visto che l'anno gia' lo determini nel where potresti aggiungere la scelta del mese nel raggruppamento.

    codice:
    GROUP BY table3.nomecampo, FROM_UNIXTIME(miadata, '%m');

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di blekm
    Registrato dal
    Jun 2004
    Messaggi
    8,310
    grazie per il consiglio, effettivamente funziona. Però sorge un problema.

    se ho questo risultato

    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1
    campo1

    so in che mese sono ordinati perchè sono 12, ma se ottengo un risultato

    campo2
    campo2
    campo2
    campo2
    campo2
    campo2

    di un numero inferiore a 12, come posso sapere quale riga corrisponde a quale mese?
    Il portale sul turismo a Lucca

    Siti web Lucca

    Vendo Tex a colori di Repubblica (primi 100 numeri) - info in pvt.

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.