Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    2 condizioni su Query ... ( per esperti... )

    A parte le battute........

    codice:
    Ho un Database MySQL con una tabella "Dettagli".
    
    Struttura di Dettagli:
    ---------------------------------
    ID inr(11)
    Campo1 varchar(50)
    Campo2 varchar(50)
    Campo3varchar(50)
    Permanente char(1)
    Adnk char(1)
    Data datetime
    ----------------------------------
    
    sono notizie di cronaca, 
    diciamo che ci sono 1000 notizie,
    
    il campo "Data" serve per 2 cose: 
     1) in base alla data si decide quando iniziare a farle visualizzare
     2) in base alla data si decide quando non visualizzarle piu'
    cioe' : se il campo "Adnk" vale "1", quel record non deve essere piu' visualizzato dopo "72 ore" giorni dalla data contenuta, 
    in questo modo si crea un intervallo di tempo dato dal punto 1) e dal punto 2) di cui sopra specificati.
    
    riassumendo: il recor che contiene il campo " Adnk" = 1  deve essere visualizzato a partire dalla data contenuta nel campo "Data" fino alla medesima + " 72 ore".
    
    Poi ci sono tutte le altre notizie che non devono essere visualizzate in un intervallo ma a partire dalla data stabilita in "Data" per essere visualizzati sempre.
    
    
    questo causa un errore nel "Paging", 
    cioe' che il numero di pagine generate sono ad esempio 100 dato che ho 10 risultati per pagina solo che nelle ultime pagine del "Paging" non trovo risultati perche' di 1000 record diciamo che 200 contengono il campo "Data" con un valore scaduto peri 3 giorni di visibilita, ma la Query del Paging li conteggia sempre........
    
    come posso ovviare alle pagine vuote ???

  2. #2
    Non so se ho capito ma provo...
    codice:
    SELECT * FROM Dettagli
    WHERE (Data >= NOW() AND Adnk = 0)
    OR (Adnk = 1 AND Data BETWEEN NOW() AND NOW() + interval 3 day)
    Metti fuori dal code quello che scrivi o vai piu' a destra di FI....
    Almeno batti un return ogni tanto (speriamo di non ... return)


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

  3. #3
    Fino a qui puo andare......
    Io ho usato un altra sintassi ma credo che la tua sia piu' consona, ma ore si deve considerare pure questa opzione che ho scritto sopra:

    Poi ci sono tutte le altre notizie che non devono essere visualizzate in un intervallo ma a partire dalla data stabilita in "Data" per essere visualizzati sempre.


    e sono tutte nella medesima tabella....

    la soluzione dovrebbe essere:

    contare il numero totale di record nella tabella escludendo dal conteggio quelli che hanno ---> (Adnk = 1 e Data < (data_di_oggi - 3 gg))

    ma come si mette in Query ???

  4. #4
    Lo dicevo che non capivo..... quale sarebbe la questione che hai scritto sopra ????

    Perche' mai devi a contare a priori i record? Se ben fosse li puoi contare quando estrai le tuple.... Se proprio li devi contare a priori fai una query SELECT COUNT(*) con le stesse condizioni che userai per estrarre ii dati successivamente.

    Hai due tipi di dati uno e' caratterizzato da Adnk = 0 e l'altro da Adnk = 1. Uno va estratto solo a partire dalla data impostata e per sempre, l'altro a partire dalla data impostata per 3 giorni e poi stop.

    Imposta la query diversamente....

    WHERE (CURDATE() >= Data AND Adnk = 0)

    Cioe'... se Data e' minore di oggi e adnk = 0 estrai la tupla .
    Poi usando curdate() le ore:min:sec mancano e vengono assunti come 00:00:00 quindi dalla mezzanotte del giorno interessato.

    L'altra condizione va bene cosi' come e'.


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

  5. #5
    ecco il risultato definitivo e funzionante

    codice:
    SELECT * FROM Dettagli WHERE (Permanente='1' AND Adnk!='1') OR (Permanente!='1' AND Adnk!='1') OR (Adnk='1' AND (Data BETWEEN NOW() AND NOW() + interval 3 day))
    ti ringrazio molto per l'aiuto che mi hai dato, ciao a presto!

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