Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-08-2006, 14:32   #1
fedo
Senior Member
 
L'Avatar di fedo
 
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
Query SQL distinct

Ciao,

ho un problema nel creare una query di selezione in una tabella.
In pratica ho 5 campi che devo farmi restituire..

molti record sono duplicati in pieno e quindi con una classica SELECT DISTINCT * li filtro bene..

il mio problema è che ci sono alcuni record che sono identici per i primi 4 campi e differiscono solo per l'ultimo...

applicando quindi la query con SELECT DISTINCT * non mi vengono filtrati questi record, mentre io voglio che venga preso solo il primo record che compare in elenco.

Esempio: ho i 3 record:

codice,nome,id1, id2, id3
50,pippo,1,1,1
50,pippo,1,1,2
50,pippo,1,1,3


Nella tabella risultato mi interessa che esca solo
50,pippo,1,1,1 , buttando via gli altri record dell'utente "pippo"

Credo sia un'idiozia , ma non riesco ad uscirne..


grazie
fedo è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2006, 15:16   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ma l'informazione nell'ultima colonna (pari ad 1 nell'esempio) ti interessa averla?

Se non ti interessa basta fare SELECT DISTINCT codice, nome, id1, id2 FROM Tabella
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2006, 15:28   #3
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
la distinct non ti serve perché lavora sull'intero record
quindi o fai
Codice:
select codice,nome,id1, id2, id3
from tabella
group by codice,nome,id1, id2, id3
having id3 = 1
oppure piú semplice
Codice:
select codice,nome,id1, id2, id3
from tabella
where id3 = 1
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2006, 16:58   #4
fedo
Senior Member
 
L'Avatar di fedo
 
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
Grazie ragazzi, ma non risolvo in quel modo.. ci avevo già pensato..

l'informazione id3 che mi genera questa difficoltà è necessaria estrarla.. quindi è strettamente necessario che la SELECT sia di tipo *

Inoltre non posso usare una WHERE specificando quell'id perchè dovete capire che questo è solo un esempio..

ho 3900 record da filtrare! e siccome questo famoso campo id1 in realtà è un numero di telefono, è ovvio che sarà differente in tutti gli altri record...
Impossibile dunque fare una query generica che lavori con una where su quel campo... il risultato sarebbe corretto, ma solo per l'utente possessore di quel telefono e non per tutti gli utenti..

Io devo estrarre un record per ogni utente..

ciao
fedo è offline   Rispondi citando il messaggio o parte di esso
Old 03-08-2006, 20:19   #5
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da fedo
Grazie ragazzi, ma non risolvo in quel modo.. ci avevo già pensato..

l'informazione id3 che mi genera questa difficoltà è necessaria estrarla.. quindi è strettamente necessario che la SELECT sia di tipo *

Inoltre non posso usare una WHERE specificando quell'id perchè dovete capire che questo è solo un esempio..

ho 3900 record da filtrare! e siccome questo famoso campo id1 in realtà è un numero di telefono, è ovvio che sarà differente in tutti gli altri record...
Impossibile dunque fare una query generica che lavori con una where su quel campo... il risultato sarebbe corretto, ma solo per l'utente possessore di quel telefono e non per tutti gli utenti..

Io devo estrarre un record per ogni utente..

ciao
Non potresti usare una variante del metodo suggerito da trallallero, che implica l'uso del group by per tutti i record meno quello che varia, e al suo posto una funzione che operi su tutti i campi del gruppo? Per spiegarmi meglio:

Codice:
select codice,nome,id1, id2, min(id3) 
from tabella
group by codice,nome,id1, id2
Naturalmente non è detto che min vada bene, ma qualche altra funzione "di scelta" che va bene forse c'è...
__________________
"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
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 00:20   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ma come ho detto io non va bene ?!?!?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 01:36   #7
fedo
Senior Member
 
L'Avatar di fedo
 
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
Quote:
Originariamente inviato da cionci
Ma come ho detto io non va bene ?!?!?

no perchè l'ultimo campo mi interessa...

comunque ho risolto così:

- estratti tutti i record con phpmyadmin e messi su file txt
- sostituito il comando INSERT con REPLACE
- eseguito lo script così modificato

In questo modo la replace non mi fa fallire l'inserimento anche se i record sono doppioni..
Il risultato è che sul db mi trovo una tabella con dentro i record filtrati come volevo io..
a questo punto basta una semplice query "from tabella" per avere tutto...

grazie a tutti e spero che il thread possa servire ad altri..
fedo è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 08:15   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da fedo
no perchè l'ultimo campo mi interessa...

comunque ho risolto così:

- estratti tutti i record con phpmyadmin e messi su file txt
- sostituito il comando INSERT con REPLACE
- eseguito lo script così modificato

In questo modo la replace non mi fa fallire l'inserimento anche se i record sono doppioni..
Il risultato è che sul db mi trovo una tabella con dentro i record filtrati come volevo io..
a questo punto basta una semplice query "from tabella" per avere tutto...

grazie a tutti e spero che il thread possa servire ad altri..
REPLACE ???
sará forse UPDATE ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 09:28   #9
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
Mi sembra strano che la cosa non si sia potuta risolvere solamente con una query SELECT.
Ad ogni modo il comando REPLACE che differenze ha rispetto all' UPDATE? Io non l'avevo mai sentito e anche sul manuale non lo trovo..
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 11:21   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da fedo
no perchè l'ultimo campo mi interessa...
Ci avresti dovuto spiegare con quale criterio scegliere il campo id3 che volevi avere nel risultato... Dopo con un group by o con una query annidata si risoveva tutto...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 11:59   #11
fedo
Senior Member
 
L'Avatar di fedo
 
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
Quote:
Originariamente inviato da Andrea16v
Mi sembra strano che la cosa non si sia potuta risolvere solamente con una query SELECT.
Ad ogni modo il comando REPLACE che differenze ha rispetto all' UPDATE? Io non l'avevo mai sentito e anche sul manuale non lo trovo..

Come avete fatto a non trovarlo nel manuale MySQL? vedi QUI


Si cionci.. penso che con la query annidata si poteva fare tutto

fai conto che hai 3 record uguali in tutti i campi tranne per id3 che varia da record a record... se faccio l'insert fallisce perchè ho la stessa chiave primaria (la devo assegnare io, non posso farla auto_increment).
Di questi 3 record devo averne uno solo nella tabella finale e qualsiasi valore di id3 mi và bene...

con la Replace, praticamente vado ad inserire nella tabella solo l'ultimo record perchè vado a socrascrivere il record con la stessa chiave primaria...dunque ottengo quello che volevo, ma certamente non è un modo ottimizzato..

ciao

Ultima modifica di fedo : 04-08-2006 alle 12:01.
fedo è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 12:37   #12
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da fedo
Come avete fatto a non trovarlo nel manuale MySQL?
perché non hai detto che era MySQL
E comunque io uso Oracle, MySQL lo lascio ai bimbi
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 15:21   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da fedo
Si cionci.. penso che con la query annidata si poteva fare tutto

fai conto che hai 3 record uguali in tutti i campi tranne per id3 che varia da record a record... se faccio l'insert fallisce perchè ho la stessa chiave primaria (la devo assegnare io, non posso farla auto_increment).
Di questi 3 record devo averne uno solo nella tabella finale e qualsiasi valore di id3 mi và bene...
Allora andava bene la query di Mixmar
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-08-2006, 17:38   #14
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da cionci
Allora andava bene la query di Mixmar
Mi pareva... una volta tanto che ne azzecco una!
__________________
"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
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2006, 01:15   #15
fedo
Senior Member
 
L'Avatar di fedo
 
Iscritto dal: Mar 2001
Città: Roma
Messaggi: 2532
si è vero... andava bene ..

ehi trallallero! ma che mi dai del bimbo

Trovami un pò un hosting economico che ti monta oracle o postgree

Si trovano ottime offerte con php+mysql e quindi se non devi sviluppare il sito della NASA, MySQL mi pare ottimo..

in ambito aziendale anche io uso Oracle, ma costa un pò di + (ma proprio poco eh..)

Altra cosa, forse dibattuta centinaia di volte: sul mio pc locale sto usando XAMPP for Windows che ti monta le ultime versioni di apache e mysql.. nel db che ho creato ci sono alcuni campi che riportano il simbolo dell' euro € oppure della parole accentate...

Quando faccio girare il sito in locale, tutti i caratteri si vedono bene, ma ho uplodato tutto su Altervista per fare una prova e tutti questi caratteri si vedono male, come se ci fosse un problema di codifica..

C'è un modo per risolvere questi problemi con le lettere accentate?

grazie
fedo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
La capsula SpaceX Dragon CRS-33 ha acces...
La NASA è sempre più vicin...
Crisi delle memorie: ASUS torna al passa...
Le console next-generation potrebbero es...
Gemini cresce ancora: la quota di mercat...
Samsung sfida TSMC: la capacità produtti...
Iliad alza il prezzo della fibra ottica ...
Il prossimo low cost di POCO sarà il più...
The Elder Scrolls VI: ecco le ultime sul...
Ecco i saldi di fine anno Amazon, 34 off...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v