>Saro petulante ma sono di certo piu confuso di prima
ti faccio un esempio, cerco di eliminarti la confusione..
Analisi:
Mi serve un database di un hotel e in questo momento mi serve avere la lista dei prodotti in scadenza per camera (o di una camera in specifico). I prodotti che fornisco ad ogni camera sono i medesimi, l'unica cosa che cambia sono le date di scadenza.
Entità:
Prodotto
Camera
Detto questo, ammettiamo che della camera mi serva sapere solo il numero. Per un campo forse posso evitare una tabella CAMERE.
Del prodotto mi serve il nome, ma, essendo una stringa anche, a volte, lunga, meglio definire un codice, magari numerico per fare in modo di non ripetere inutilmente le descrizioni, onerose sulle query che dovrò fare in seguito. Quindi mi serve una tabella PRODOTTI, ad esempio, così formata:
IDProdotto numerico intero
Nome testo variabile
Descrizione testo variabile
Ora, come faccio a capire quali sono i prodotti assegnati alle camere? Devo logicamente pensare ad una relazione tra l'entità camera e quella prodotti, in modo che io possa sapere quali sono i prodotti per camera, che, saranno pure gli stessi, ma comunque ripetuti per ogni camera perchè la loro data di scadenza cambia.
Quindi posso pensare ad una tabella PRODOTTI_IN_SCADENZA fatta così:
Camera numerico intero
IDProdotto numerico intero
DataScadenza Data
In questo modo, una volta che ho inserito tutti i prodotti in tutte le camere, posso fare una query di questo tipo per avere la lista dei prodotti in scadenza (3 giorni nell'esempio) con la rispettiva camera di riferimento:
SELECT
PS.Camera
, P.Nome AS Prodotto
, P.DataScadenza
FROM
PRODOTTI_IN_SCADENZA AS PS
INNER JOIN PRODOTTI AS P ON PS.IDProdotto = P.IDProdotto
WHERE
PS.Data >= NOW() - 3
GROUP BY
PS.Camera
In questo modo avrai la lista dei prodotti che scadranno entro tre giorni per camera. Se ti serve sapere la situazione di una sola camera, togli il GROUP BY e nella where aggiungi il filtro per camera. Spero sia più chiaro.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi