|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2005
Messaggi: 131
|
Query SQL
Ciao a tutti. Spiego subito il problema. Devo ricavare una lista di prodotti da una tabella che hanno queste caratteristiche: appartengono a categorie diverse e tra quelli della stessa categoria, hanno la data di inserimento maggiore.
In soldoni, mi serve per ogni categoria di prodotti, il prodotto inserito più di recente. la tabella in questione ha come campi interessati: - id_prodotto - id_categoria - data_inserimento - nome - ecc. ecc. Sto provando con query composte, ma non ottengo una lista bensì un solo valore. Sto cercando di risolvere il problema con una singola query visto che nella pagina php che deve gestire questi dati sono già presenti 5 query che si attivano al load della pagina. Non vorrei appesantire troppo il tutto... Che mi potete dare un aiuto? Grazie pbg4
__________________
PowerBook G4 1,5, 60Gb Hd, 1,2 Gb DDR, mouse wireless by Apple, iPod nano black 4GB, laurea in informatica ![]() GeForce Fx 5200 64mb |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Dec 2000
Città: Roma
Messaggi: 943
|
Ordina per categoria e poi per data discendente:
ORDER BY id_categoria, data DESC
__________________
Battletag: Mavel72#2336 |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jul 2005
Messaggi: 131
|
Quote:
mi sto ![]() ![]() ![]() ![]()
__________________
PowerBook G4 1,5, 60Gb Hd, 1,2 Gb DDR, mouse wireless by Apple, iPod nano black 4GB, laurea in informatica ![]() GeForce Fx 5200 64mb |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2001
Città: milano, qualunque birreria
Messaggi: 4208
|
secondo me questa potrebbe fungere...
select id_prodotto, id_categoria, nome, max(data_inserimento) from tabella order by id_categoria
__________________
Save water: drink beer.
This message has been created with 100% recycled electrons Un rutto vale più di mille parole. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Penso che si potrebbe risolvere con un GROUP BY:
Codice:
SELECT ID_PRODOTTO, NOME, DATA_INSERIMENTO FROM PRODOTTI JOIN (SELECT ID_CATEGORIA, MAX(DATA_INSERIMENTO) FROM PRODOTTI GROUP BY ID_CATEGORIA) AS T ON ID_CATEGORIA=T.ID_CATEGORIA AND DATA_INSERIMENTO=T.DATA_INSERIMENTO ![]() Questo è un po' migliore, l'ho costruito prendendo spunto da mainland: Codice:
SELECT ID_PRODOTTO, ID_CATEGORIA, NOME, DATA_INSERIMENTO FROM PRODOTTI AS A JOIN (SELECT ID_PRODOTTO, ID_CATEGORIA, MAX(DATA_INSERIMENTO) FROM PRODOTTI) AS B ON A.ID_CATEGORIA=B.ID_CATEGORIA AND DATA_INSERIMENTO=B.DATA_INSERIMENTO AND A.ID_PRODOTTO=B.ID_PRODOTTO ![]()
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN Ultima modifica di Mixmar : 31-08-2006 alle 21:05. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:04.