Query possibile?

giovedì 28 gennaio 2010 - 10.27

dotnetnapo Profilo | Junior Member

Ciao a tutti, riposto il msg sperando di essere più chiaro...

premetto che lavoro con MYSQL

Supponiamo di avere qs tab

ID | IDTIPO | NUMERO
---------------------
1 | 1 | 20
2 | 1 | 10
3 | 1 | 30
4 | 2 | 40
5 | 2 | 20
6 | 2 | 10
7 | 3 | 50
8 | 3 | 40
9 | 3 | 30

Se eseguo la query

SELECT
prova_tipo.ID,
prova_tipo.IDTIPO,
Min(prova_tipo.NUMERO) AS `MIN`
FROM
prova_tipo
GROUP BY
prova_tipo.IDTIPO

per cercare il minimo prezzo dei vari IDTIPO ottengo:

ID | IDTIPO | NUMERO
---------------------
1 | 1 | 10
4 | 2 | 10
7 | 3 | 30

Query giusta dal punto di vista dei minimi ma non dall'ID!!!!!!! In pratica i valori sono stati sciftati in alto andando a prendere il primo ID di IDTIPO...

Ho provato anche a prendere i valori minimi tramite una subquery ma la cosa non funziona in quanto se vi sono due numeri uguali fa casino lo stesso...

Come può ottenersi la query

ID | IDTIPO | NUMERO
---------------------
2 | 1 | 10
6 | 2 | 10
9 | 3 | 30

che è quella che voglio?

Grazie

lbenaglia Profilo | Guru

>Come può ottenersi la query
>
>ID | IDTIPO | NUMERO
>---------------------
>2 | 1 | 10
>6 | 2 | 10
>9 | 3 | 30
>
>che è quella che voglio?

Non conosco MySQL ma una soluzione standard (creata con SQL Server 2008) potrebbe essere:

USE tempdb; CREATE TABLE dbo.foo( ID int NOT NULL PRIMARY KEY, IDTIPO int NOT NULL, NUMERO int NOT NULL ); INSERT dbo.foo VALUES (1, 1, 20) , (2, 1, 10) , (3, 1, 30) , (4, 2, 40) , (5, 2, 20) , (6, 2, 10) , (7, 3, 50) , (8, 3, 40) , (9, 3, 30); SELECT F.* FROM dbo.foo AS F INNER JOIN ( SELECT IDTIPO , MIN(NUMERO) AS NUMERO FROM dbo.foo GROUP BY IDTIPO ) AS Q ON F.IDTIPO = Q.IDTIPO AND F.NUMERO = Q.NUMERO; /* Output: ID IDTIPO NUMERO ----------- ----------- ----------- 2 1 10 6 2 10 9 3 30 (3 row(s) affected) */ DROP TABLE dbo.foo;

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

dotnetnapo Profilo | Junior Member

Ti ringrazio era quello che cercavo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5