PDA

Visualizza la versione completa : [DELPHI] SELECT DISTINCT riporta tutti i valori


FilSWS
17-10-2007, 18:32
Ciao,
uso i componenti INTERBASE con db Firebird e devo fare una query semplicissima che mi filtri i doppioni all'interno di una tabella.

esempio:

SELECT DISTINCT (campo1),campo2,campo3 from Tabella order by campo1

sembra che il DISTINCT non lo considera.Escono comunque tutti i valori.

Cosa sbaglio???

Grazie


:unz:

alka
18-10-2007, 01:51
Il fatto che tu abbia usato una parentesi mi lascia supporre che i campi abbiano tutti valori diversi, ma che tu voglia "distinguere" solo per il primo.

La clausola DISTINCT non funziona in questo modo, per quanto mi ricordo io: tutti i campi inclusi nella query vengono considerati.

FilSWS
18-10-2007, 13:48
Lo pensavo anchio, ma dopo una ricerca sul web ho visto che si usano le ( ) per indicare solo un campo.

Altrimenti come potrei fare??

Nikk11
18-10-2007, 16:04
Io non ho ben capito cosa vorresti fare... :master:
qualche anno che uso firebird... e mi pare che il distinct agisca su tutti i campi della select, ovvero se hai + record uguali la query te ne da uno solo.
Magari fai un'esempio di quello che vorresti ottenere con 2 dati di prova...

ciao
:ciauz:

FilSWS
18-10-2007, 19:03
ho una tabella con questi campi

num fattura importo importo scadenza cod cliente
1 500 250 25
1 500 250 25
2 200 200 30
3 1000 350 31
3 1000 350 31
3 1000 300 31
4 2000 2000 40
5 200 200 40

il risultato della mia query deve essere

num fattura importo
1 500
2 200
3 1000
4 2000
5 200

ho tralasciato alcuni campi per rendere piu snello l'esempio, in poche parole devo ottenere i numeri di fattura singoli con l'importo.

Nikk11
18-10-2007, 20:40
allora basta che fai solo "select distinct numero_fattura, importo from tabella "


ciao :ciauz:

alka
19-10-2007, 11:22
Originariamente inviato da FilSWS
Lo pensavo anchio, ma dopo una ricerca sul web ho visto che si usano le ( ) per indicare solo un campo.
Fornisci il link, cos approfondiamo.

mondobimbi
19-10-2007, 12:05
devi usare group by

SELECT campo1,campo2,campo3 from Tabella group by campo1 order by campo1;

ciao
sergio

FilSWS
19-10-2007, 16:45
Se uso group by mi da errore:

Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause). Proccess Stopped ecc ecc

la query semplicissima del tipo

select * from tabella where campo1 > 1 group by campo2

FilSWS
19-10-2007, 16:48
Per alka

questo qui di seguito il link che dicevo sopra

Clicca qui (http://www.mrwebmaster.it/tutorial/sql/tutorial435.htm)


Ho visto adesso che si riferisce a SQL Server...forse cambia!!!

Ciao :bh:

Loading