Newsgroup: it.comp.software.database
Titolo: Aiuto per Query

Salve,
sto utilizzando ADO con VB6  per una connessione ODBC a Sybase SQL
Anywhere Database Engine Version 5.5.04 Build #1867.
Ho un campo chiave (CODICE), un campo data (DATA) e un campo con dei
valori numerici (VALORE).
Ora vorrei ordinare il database per CODICE e DATA e poi raggruppare i
record per codice.
All'interno di ogni gruppo voglio selezionare il valore del campo VALORE
con data piu' vecchia.
Che tipo di query SQL devo realizzare?
Spero che mi possiate aiutare
Ciao
Donatella :)
Esempio:
CODICE        DATA        VALORE
1                    02/05/1998        8
2                    12/12/1999        4
2                    13/09/2000        5
1                    27/06/1996        9
voglio ottenere i seguenti record:
CODICE        DATA        VALORE
1                    02/05/1998        8
2                    13/09/2000        5
-- 
Posted from root@[195.120.213.3] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 con data piu' vecchia.
Qualcosa del tipo
SELECT CODICE, VALORE, MIN(DATA)  FROM <tabella> GROUP BY CODICE
Davide

e' esattamente quello che voglio ottenere, pero' se metto valore in select, lo
stesso campo va elencato anche in group by! e io non voglio elencarlo,
altrimenti ottengo una selezione sbagliata!
Sto provando di tutto, ma non ci riesco!
Help me, please!!!!!!
Donatella :)


 voglio elencarlo, altrimenti ottengo una selezione sbagliata!
Non mi viene in mente nessun sistema per restringere la query
con una Select, credo che l'unica sia quella di scrivere una
Stored Procedure e farsi l'elaborazione manuale.
Davide

 ha scritto nel messaggio
news:3B122448...@cmns.mnegri.it...


...hai ragione, ma non sono riuscita a far funzionare la query che mi
suggervi, ovvero funzionava con jet ma non  con sybase!!!!!
mi consigliavi:
SELECT codice, data_open, p_min
 FROM tabella
 WHERE codice & data_open in (select codice & min(data_open) from
 tabella group by codice)
ma non va!!!!!

 ha scritto nel messaggio
news:3B126168...@cmns.mnegri.it...


Che tipo di query SQL devo realizzare?
Su SQL Server funziona
SELECT T1.CODICE, T1.VALORE
	FROM #T AS T1
	WHERE T1.CODICE IN 
	(
		SELECT DISTINCT T2.CODICE FROM #T AS T2
	)
	AND T1.DATA IN
	(
		SELECT MAX(T3.DATA) FROM #T AS T3 GROUP BY T3.CODICE
	)
-- 
Tieni per te il Papero giusto se vuoi la mia email
Sito Papero -> 
http://utenti.tripod.it/papero
Link al Sito Papero 
http://www.mathtools.net/





scusate se mi intrometto ma vedi un po se ti va bene cosi'!


l'unico problema della select e' che non hai specificato cosa deve


restituire nel caso piu' occorrenze hanno il codice e la data uguali.






SELECT t1.CODICE, t1.VALORE, t1.DATA  FROM <tabella> t1


where t1.data = (select min (t2.data) from <tabella> t2 


        
                        where t1.codice = t2.codice)


ORDER BY t1.CODICE,t1.DATA                              






c
ladig







 cladig








--------------------------------------------------------------------------------


Visitateci e acquistate in rete su 
http://www.wind.it



--------------------------------------------------------------------------------




 ha scritto 
  nel messaggio 
news:3B1BADF8...@cmns.mnegri.it
...


ciao 
vedi che le "due" tabelle dopo le due condizioni "from" sono la stessa
tabella ma hanno alias diversi. 
SELECT t1.CODICE, t1.VALORE, t1.DATA  FROM <tabella> t1
where t1.data = (select min (t2.data) from <tabella> t2 
	  		  	where t1.codice = t2.codice)
ORDER BY t1.CODICE,t1.DATA				
ES.  
CREATE TABLE PIPPO
(
	CODICE	NUMBER,
	VALORE	NUMBER,
	DATA	DATE
)
insert into pippo values (1, 8, to_date ('02-05-1998', 'dd-mm-yyyy'));
insert into pippo values (2, 4, to_date ('12-12-1999', 'dd-mm-yyyy'));
insert into pippo values (2, 5, to_date ('13-09-2000', 'dd-mm-yyyy'));
insert into pippo values (1, 9, to_date ('27-06-1996', 'dd-mm-yyyy'));
commit
select * from pippo
CODICE	VALORE	DATA
1		8		02/05/98
2		4		12/12/99
2		5		13/09/00
1		9		27/06/96
SELECT t1.CODICE, t1.VALORE, t1.DATA  FROM PIPPO t1
where t1.data = (select min (t2.data) from PIPPO t2 
	  		  	where t1.codice = t2.codice)
ORDER BY t1.CODICE,t1.DATA				
CODICE	VALORE	DATA
1		9		27/06/96
2		4		12/12/99
tu hai richiesto che fossero considerate le occorrenze con la data piu
vecchia 
ma poi nellesempio hai messo la data piu recente nel caso la query diventa 
SELECT t1.CODICE, t1.VALORE, t1.DATA  FROM PIPPO t1
where t1.data = (select max (t2.data) from PIPPO t2 
	  		  	where t1.codice = t2.codice)
ORDER BY t1.CODICE,t1.DATA				
CODICE	VALORE	DATA
1		8		02/05/98
2		5		13/09/00
NB. prova ad eseguire i passi precedenti e ti convinci
claudio
--------------------------------------------------------------------------------
Visitateci e acquistate in rete su 
http://www.wind.it
--------------------------------------------------------------------------------
-- 
Posted from [212.141.48.59] 
