Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 66
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107

    [mysql] periodo univoco

    ciao a tutti...mi trovo nella seguente situazione: ho una colonna "box" (facoltativa) e 2 colonne "dataIN" e "dataOUT" (obbligatorie). come posso far si che il periodo compreso tra le 2 date sia univoco nel caso in cui box sia compilata per quella singola tupla?

    grazie!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    nessuno ha idee ragazzi? davvero non saprei in che direzione andare...

  3. #3
    fa' un esempio, un disegnino, insomma aiuta il mio unico neurone in servizio a capire cosa ti serve

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    ciao optime, provo a riscrivere il primo post in modo più esteso possibile:

    in una tabella che utilizzo per l'inserimento di prenotazioni, ho N colonne e 3 di queste si chiamano rispettivamente "box" "dataIN" "dataOUT" dove ovviamente "box" sarà il numero o il nome del box, "dataIN" e "dataOUT" le date di inizio e fine prenotazione.
    posto che box può essere NULL (non è obbligatorio inserire quale box già in fase di prenotazione...potrà essere assegnato in qualunque momento), dataIN e dataOUT sono invece NOT NULL.
    ora, il problema è: come faccio ad impedire l'inserimento di uno stesso numero o nome di box se in un dato intervallo di tempo compreso tra dataIN e dataOUT questo box è stato già assegnato?
    in altre parole, la combinazione "box" e "date comprese tra dataIN e dataOUT" deve essere univoca. nel contempo però possono coesistere altri periodi analoghi o simili di "date comprese tra dataIN e dataOUT", purché non abbiano box assegnato o abbiano un numero di box anora non assegnato per quel periodo.

    esempi:
    box | dataIN | dataOUT
    1 | 1/2/13 | 5/2/13 => OK
    - | 1/2/13 | 5/2/13 => OK
    2 | 1/2/13 | 5/2/13 => OK
    1 | 4/2/13 | 9/2/13 => ERRORE!

    spero di esser riuscito a spiegare meglio

  5. #5
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    bhè la soluzione è piuttosto evidente sia lato applicazione che database, anche se in quest'ultimo caso mi pare un pochino cervellotica.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    perdona se non noto tutta questa evidenza, riusciresti ad illustrarmela? grazie...

  7. #7
    Ciao,

    come giustamente ti ha fatto notare franzauker puoi risolvere il problema sotto 2 fronti.

    Lato applicazione, controlli da codice prima di inserire se c'e' gia uno stesso box in quella data.

    Lato db in fase di definizione della tabella potresti inserire un check che non ti consenta di inserire 2 nomi di box in una stessa data tipo check (1<= Select count(*) ecc)
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    107
    si bomberdini...pensavo ad una soluzione lato db in quanto lato app mi sembrava meno sicura...però effettivamente è più facile implementarla lato app!

    a livello di vincolo di integrità referenziale (che stupido, non ci avevo proprio pensato!) il tuo esempio non mi sembra possa produrre qualosa per il mio scopo...no? servirebbe qualcosa che a livello logico potrebbe essere così:
    CHECK (box UNIQUE BETWEEN dataIN AND dataOUT)
    ma a livello di sintassi corretta non saprei come scriverlo...che ne dici?

  9. #9
    Si esattamente...

    Pero prima facciamo una prova di tester...

    Prova a fare questa creazione e inserisci dati che dovrebbero dare errore vediamo se te li da... Una prova nn si nega a nessuno

    codice:
    CREATE TABLE TAB(
    dataIn date,
    dataOut date,
    box char(10) check (1<= ( SELECT COUNT(*)
                                         FROM TAB
                                         WHERE TAB.dataIn = dataIn And TAB.dataOut=dataOut))
    Usando relazioni una cosa del genere si puo fare direttamente sulla stessa tabella non ne sono certo...

    L'idea comunque e' che non ci possono essere 2 box nella stessa data...
    Intanto prova a mettere solo 2 box nella stessa data cosa che in realta e' ammissibile per te... Ma supponiamo di no

    Se funge lo ampiamo
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    mysql e check?

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.