Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    3
    Qual è la sintassi di SQL se devo estrapolare contemporaneamente tre dati dal data base, ed ognuno di questi, nel codice sql, contiene la sintassi (Between...AND) poichè deve essere compreso tra due valori che vengono immessi da un form.
    Il problema è che se scrivo: Where (nome BETWEEN xxx AND yyy) AND (nome2 BETWEEN zzz AND kkk)
    mi estrapola i dati senza esaminare CONTEMPORANEAMENTE la veridicità delle condizioni immesse.
    SOno stata chiara?
    VI prego...aiutatemi...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    363
    Between si usa solitamente per le Date. Probabilmente non fai il cast e quindi ti valuta sempre FALSE (oppure sempre TRUE)
    Prova a postare il codice.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    3
    Infatti mi serve per le date.
    Praticamente nel mio database ho 3 colonne, una per il giorno, una per il mese ed una per l'anno. Il mio form chiede di digitare l'intervallo di tempo che si vuole analizzare, ma digitando WHERE (GIORNO BETWEEN A AND B) AND (MESE BETWEEN A AND B) AND (ANNO BETWEEN A AND B) mi seleziona, sì, gli intervalli, ma non me li discrimina, e cioè mi prende tutti i record che rientrano tra gli intervalli per ciascuna delle condizioni between. Non riesce,quindi, a farli agire contemporaneamente.
    Dovrebbe esistere un comando che gli indica di agire contemporaneamente. O no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    363
    'Spezzare' la data su tre colonne (giorno,mese,anno) è solitamente, a livello concettuale, sbagliato (a parte casi molto particolari).
    Devi usare un campo di tipo date e poi in SQL scrivere
    WHERE MiaData BETWEEN DataInizio AND DataFine
    oppure
    WHERE MiaData <= DataFine AND MiaData >= DataInizio

    P.S.: d'altronde, se esiste un tipo di dato datetime un motivo ci sarà pure....


  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2001
    Messaggi
    3
    Purtroppo non riesco a far interagire come si deve il data base con il recordset quando c'è di mezzo una data. Non so, forse è un malfunziuonamento di access, o forse sono io a non funzionare.
    Il fatto è che con il sistema delle tre date separate in parte funzionava, mi mancava solo la congiunzione esatta in SQL, che non fosse un semplice BETWEEN AND, perchè c'erano 3 gruppi di dati, e non riuscivo a comprenderli tutti e tre contemporaneamente.

  6. #6

    ... simulazione...

    Ho provato a simulare il tuo problema, ma a me funziona. Io nella tabella di sql ho definito i campi Giorno e Mese come TinyInt e anno come SmallInt.
    La select è del tipo :

    SELECT * FROM TEST WHERE (G BETWEEN A AND B) AND (M BETWEEN A AND B) AND (A BETWEEN A AND B)

    la clausola mi ritorna solo i record le cui date sono comprese tra A e B (dei rispettivi campi ovviamente).
    Nel mio esempio:
    A(Giorno)=1 A(Mese)=1 A(Anno)=2000
    B(Giorno)=5 A(Mese)=10 A(Anno)=2001

    mi restituisce solo le date comprese tra 1/1/2000 e 5/10/2001.

    La query è stata lanciata direttamente da SQL Server Query Analyzer.
    Spero di aver capito il problema...

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.