|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2004
Città: Prov. Savona
Messaggi: 166
|
[PostgreSQL] aiuto per query
ciao a tutti, ho una tabella tab di righe fatte così:
ord(int) | item(string) | data(date) dove ord è Primary Key ed è progressivo per riga; i campi (a parte ovviente ord) possono essere vuoti. A me seve una query che mi dia le riga tra 2 date, e ho fatto: SELECT * FROM tab WHERE data BETWEEN 'data1' AND 'data2' che però nn mi restituisce le righe dove il campo data è vuoto! Si può ovviare? grazie!!
__________________
Abit NF-M2 nView - AMD Athlon 64 X2 4200+ EE - Corsair TWIN2X 1024-6400C4 EPP |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Se non c'è una data, suppongo che sia NULL, quindi credo che si possa aggiungere: OR data IS NULL
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jul 2004
Città: Prov. Savona
Messaggi: 166
|
Quote:
data1 < data2 a data1 corrisponde ord1, a data2, ord2 (quindi ord1 < ord2) la query dovrebbe restituire le righe tra ord1 e ord2, comprese quelle dove data = NULL. scusa se ho spiegato male.
__________________
Abit NF-M2 nView - AMD Athlon 64 X2 4200+ EE - Corsair TWIN2X 1024-6400C4 EPP |
|
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
La query che hai fatto dice solo di prendere tutte le righe in cui il campo data è compreso tra due valori. Che poi tutte le righe che hanno data1 <= data <= data2 siano anche, guarda caso, tra un certo ord1 e ord2 .... è un caso particolare.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#5 | |
Member
Iscritto dal: Jul 2004
Città: Prov. Savona
Messaggi: 166
|
Quote:
quello che mi serve è una cosa che prende le 2 date, data1 e data2, faccia la query: SELECT * FROM tab WHERE data BETWEEN 'data1' AND 'data2' dopodichè prenda il più piccolo ed il più grande dei valori ord restituiti e faccia una seconda query:SELECT * FROM tab WHERE ord BETWEEN 'ord1' AND 'ord2' Ma una cosa così si riesce a fare solo con SQL?
__________________
Abit NF-M2 nView - AMD Athlon 64 X2 4200+ EE - Corsair TWIN2X 1024-6400C4 EPP |
|
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Codice:
SELECT * FROM tab WHERE ord BETWEEN (SELECT MIN(ord) FROM tab WHERE data BETWEEN 'data1' AND 'data2') AND (SELECT MAX(ord) FROM tab WHERE data BETWEEN 'data1' AND 'data2') ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
![]() |
![]() |
![]() |
#7 | |
Member
Iscritto dal: Jul 2004
Città: Prov. Savona
Messaggi: 166
|
Quote:
![]() provo e vedo. per ora ti ringrazio.
__________________
Abit NF-M2 nView - AMD Athlon 64 X2 4200+ EE - Corsair TWIN2X 1024-6400C4 EPP |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:37.