51 messaggi dal 10 ottobre 2003
ciao a tutti,

ho un problemino su una query; ho un db con una tabella di utenti (TUTENTI) in cui è contenuto il campo NASCITA con la data di nascita di ogni utente.

vorrei selezionare con una query solo gli utenti che compiono gli anni nello stesso giorno (non contando l'anno, solo mese e giorno) ma non so come fare.

facendo una cosa di questo tipo mi fa vedere solo i nati nella stessa data:
SELECT * FROM TUtenti WHERE nascita=#"&nascita&"#" (dove la var Nascita è la data di nascita dell'utente che effettua la query)

qualcuno sa dirmi come posso fare la query solo sul giorno e sul mese?
2.584 messaggi dal 14 maggio 2001
Che Db stai usando?
Potresti fare un query:
"SELECT * FROM Utenti WHERE Month(Data)=7 AND Day(Data)=30"

Però per migliorare le performance direi che dovresti aggiungere due campi sul db in più in cui registri il giorno ed il mese di nascita...
51 messaggi dal 10 ottobre 2003
uso un DB access.

ora provo come mi hai detto tu
51 messaggi dal 10 ottobre 2003
Grazie 1000
FUNZIONA!

non sapevo si potessero mettere delle funzioni come criterio nelle query SQL!

bene a sapersi!

ciauz!
3.122 messaggi dal 16 maggio 2002
Se vuoi l'elenco degli utenti che compiono gli anni lo stesso giorno indipendentemente dalla data puoi eseguire la query
SELECT *
FROM utenti u1
WHERE EXISTS (
SELECT *
FROM utenti u2
WHERE u1.data=u2.data
AND u1.id<>u2.id
)

supponendo che id sia chiave per la tabella.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
51 messaggi dal 10 ottobre 2003
non ho capito bene questa query, in particolare non capisco il discorso del u1 e u2 e non ho mai visto la condizione WHERE EXIST.

mi potresti spiegare il funzionamento di questa query?
3.122 messaggi dal 16 maggio 2002
u1 e u2 sono alias per la stessa tabella. Questa query si legge così:
"seleziona tutti gli utenti per i quali esiste almeno un altro utente la cui data di nascita sia la stessa".
La condizione EXISTS() restituisce true se la subquery scritta al suo interno restituisce almeno un risultato, false in caso contrario.
In pratica, con la query più esterna vado a scandire tutti gli utenti e, per ognuno di questi, interrogo nuovamente la tabella alla ricerca di utenti la cui data sia uguale ma che non siano l'utente stesso (poiché ogni utente ha la data uguale alla propria!).
Inutile dire che questa query, non facendo uso di indici ed essendo costretta alla ricerca sequenziale, è estremamente pesante. Può essere usato l'indice su data (se presente) solamente nella query interna (meglio che niente).

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
51 messaggi dal 10 ottobre 2003
Grazie 1000! ho imparato una cosa nuova

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.