Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    C'e' qualcosa che non torna.

    Innanzitutto non vuoi estrarre la prima data nella lista successiva alla data paramentro ma vuoi esattamente il giorno dopo estrazione. Che son cose diverse.

    Quindi, come avevi messo tu, e' piu' corretto mettere data = now() + 1 (attenzione alle parti di ore e minuti pero').

    Se pero' metti un generico "domani" non capisco come tu possa pretendere che nei giorni a venire non tiri fuori nulla.....

    Se hai 3 record con date 20 - 21 - 22 tutte di ottobre e usi now() +1 ...lanciato oggi varra' 20, se lo lanci domani vale 21 e dopo domani 22. Quindi in ordine oggi tira fuori le pratiche con data 20 - 10 - 2010, se la lanci domani tirera' fuori il record con data 21-10-2010 e via via.

    O c'e' un vincolo che hai omesso di riportare ?

    Nel secondo commento
    "Inoltre, ovviamente, se la data 2010-10-19 fosse stata la seconda in ordine cronologico di un qualsiasi gruppo, ovviamente non doveva essere presa in considerazione, perchè non è la prima."

    come e' possibile che filtrando per " Data =" sia la seconda ? Questo e' mistero.

    Cioe' da un lato vuoi i record che abbiano una data esattamente a un valore (ovvero "now() +1")...dall'altro parli di prima di una lista e di minore. Decidi: o vuoi le pratiche che corrispondono a una data esatta o la minore di tutte quelle maggiori di un valore.

    Io ho sempre come l'impressione di aver profondamente travisato qualcosa nella tua richiesta

  2. #12
    Originariamente inviato da Mashin
    C'e' qualcosa che non torna.

    Innanzitutto non vuoi estrarre la prima data nella lista successiva alla data paramentro ma vuoi esattamente il giorno dopo estrazione. Che son cose diverse.

    Quindi, come avevi messo tu, e' piu' corretto mettere data = now() + 1 (attenzione alle parti di ore e minuti pero').

    Se pero' metti un generico "domani" non capisco come tu possa pretendere che nei giorni a venire non tiri fuori nulla.....

    Se hai 3 record con date 20 - 21 - 22 tutte di ottobre e usi now() +1 ...lanciato oggi varra' 20, se lo lanci domani vale 21 e dopo domani 22. Quindi in ordine oggi tira fuori le pratiche con data 20 - 10 - 2010, se la lanci domani tirera' fuori il record con data 21-10-2010 e via via.

    O c'e' un vincolo che hai omesso di riportare ?

    Nel secondo commento
    "Inoltre, ovviamente, se la data 2010-10-19 fosse stata la seconda in ordine cronologico di un qualsiasi gruppo, ovviamente non doveva essere presa in considerazione, perchè non è la prima."

    come e' possibile che filtrando per " Data =" sia la seconda ? Questo e' mistero.

    Cioe' da un lato vuoi i record che abbiano una data esattamente a un valore (ovvero "now() +1")...dall'altro parli di prima di una lista e di minore. Decidi: o vuoi le pratiche che corrispondono a una data esatta o la minore di tutte quelle maggiori di un valore.
    Non riesco a spiegarmi......
    Facciamo così, lasciamo perdere l'oggi e il domani, perchè comunque non cambia nulla nella query è come passare una data piuttosto che un'altra.
    Tralasciato questo, ogni gruppo (sottoevento) puo' contenere 1,2,3,4,5,.... date che fanno parte di quel sottoevento e così via per tutti i sottoeventi (gruppi), vedila come un insieme di date appartenenti ad un gruppo.
    Ora siccome questi gruppi (sottoeventi) possono essere centinaia, migliaia, io ogni giorno devo poter prelevare tutti i record nella tal tabella che soddisfino queste condizioni:

    1) La data deve essere il giorno dopo a quello corrente.
    2) La data deve essere la prima in ordine cronologico di un qualsiasi gruppo, la prima e solo la prima

    Quindi se lanciata oggi deve estrarre dai gruppi che contengono questa data, solo quelli che hanno come prima data in ordine cronologico quella specifica data.
    Quindi se in un gruppo ho:

    2010-10-20
    2010-10-21
    2010-10-22
    2010-10-23

    deve essere presa in considerazione, ma solo oggi (che è il giorno prima del 20), perchè domani, la data cambierà e quindi non sarà più l prima.

    se invece ha:

    2010-10-18
    2010-10-19
    2010-10-20

    non deve essere presa in considerazione perchè 2010-10-20 non è la prima data in ordine cronologico di quel gruppo, nel caso specifico la prima data è 2010-10-18, quindi in questo esempio, questo gruppo sarebbe stato preso in considerazione il 2010-10-17, ovvero il giorno prima della prima data in ordine cronologico di questo gruppo.

    Dimmi che mi sono spiegato

  3. #13
    quindi, estrarre solo quei gruppi che hanno come PRIMA data della serie NOW+1 (un domani generico)? o comunque (sempre come PRIMA data della serie) una data maggiore di NOW+1?

  4. #14
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Uso nomi generici per comodita' di scrittura.

    codice:
    Select 
       ID, Data, Gruppo
    from
       tabella as tab1 
    where
         Data = now + 1
    and data=(select min(data)
                   from
                   tabella where
                   gruppo = tab1.gruppo)
    alternativamente

    codice:
    Select 
       ID, Data, Gruppo
    from
       tabella join 
       (select 
            gruppo, min(data) as min
        from 
            tabella 
        group by gruppo) as tab2 
               on tabella.gruppo=tab2.gruppo
              and tabella.data = tab2.data
    where
         Data = now + 1

    oppure se non ti serve L'ID personale della riga


    codice:
    Select 
       min(Data), Gruppo
    from
       tabella
    group by Gruppo
    having min(data) = now() +1

  5. #15
    Ora le testo su navicat e ti faccio sapere

  6. #16
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    Per la seconda mi son accorto di 2 errorini
    codice:
    Select 
       ID, Data, tabella.Gruppo
    from
       tabella join 
       (select 
            gruppo, min(data) as min
        from 
            tabella 
        group by gruppo) as tab2 
              on tabella.gruppo=tab2.gruppo
              and tabella.data = tab2.min 
    where
         Data = now + 1

  7. #17
    solo una cosa per capire, tu chiami tab2...ma la tabella è una sola, è solo per convenzione?

  8. #18
    Utente di HTML.it L'avatar di Mashin
    Registrato dal
    Jul 2010
    Messaggi
    187
    La tabella e' una sola ma dovendola utilizzare 2 volte nella stessa query (la prima come query annidata, la seconda come tabella virtuale da mettere in join) devo differenziarle senno' non riesco a referenziare correttamente i campi.
    Quindi uso degli alias.

  9. #19
    Originariamente inviato da Mashin
    La tabella e' una sola ma dovendola utilizzare 2 volte nella stessa query (la prima come query annidata, la seconda come tabella virtuale da mettere in join) devo differenziarle senno' non riesco a referenziare correttamente i campi.
    Quindi uso degli alias.
    Ok perfetto, come immaginavo, ritorno ai test, poi ti faccio sapere, speriamo funzioni

  10. #20
    Allora ho provato così

    codice:
    Select 
      sottoeventi_personale.id_personale,
      sottoeventi_personale.data_sottoevento,
      sottoeventi_personale.id_sottoevento
    from
       sottoeventi_personale join 
       (select 
            sottoeventi_personale.id_sottoevento, min(sottoeventi_personale.data_sottoevento) as min_data
        from 
            sottoeventi_personale 
        group by sottoeventi_personale.id_sottoevento) as tab2 
              on sottoeventi_personale.id_sottoevento=tab2.id_sottoevento
              and sottoeventi_personale.data_sottoevento = tab2.min 
    where
         sottoeventi_personale.data_sottoevento = '2010-10-10'
    e mi da errore Unknown column 'tab2.min' in 'on clause'
    ho fatto alcune prove ma non ne esco

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 © 2026 vBulletin Solutions, Inc. All rights reserved.