Cartello stradale a Lecco…

di *aLeX*, 8 December 2009 11:51

Certo che se ne vedono di cose strane…

05122009

Ed io che pensavo che certe cose le facessero solo gli ingegneri! :-)

Trovare ed eliminare record (semi-)duplicati in SQL

di *aLeX*, 22 September 2009 18:25

Lo ammetto: non é certo la cosa più complicata del mondo eliminare le righe duplicate in un database; quando serve però non viene mai in mente un modo per farlo.
Questo post lo categorizzo quindi come mio promemoria!

Perché (semi-)duplicati?
Parto dall’esempio pratico: aggiungere una chiave ad una tabella già piena di dati.
Ovviamente, per la legge di Murphy, i valori dei campi che dovrebbero diventare chiave non saranno mai tutti diversi. Voglio quindi eliminare dalla tabella i record con chiavi uguali, preservandone solo una copia per ognuno.

Poniamo che la nostra tabella di chiami table1 con campi field1,field2,field3 (la fantasia nel dare i nomi é il mio forte). Vogliamo far diventare field1 e field2 chiave primaria. Per eliminare i duplicati eseguiamo:

SELECT *
FROM db.table1 as t2
WHERE (t2.field1,t2.field2,t2.field3) not in (
SELECT t1.field1,t1.field2, min(t1.field3)
FROM db.table1 as t1
group by t1.field1,t1.field2)

Fatto! Come preannunciato niente di emozionante… ;-)

Ovviamente la regola min(t1.field3) puo’ essere cambiata a piacimento per conservare il record piu’ conveniente ai fini dell’applicazione.

Fifty people one question

di *aLeX*, 31 October 2008 23:27

Fifty People, One Question: New Orleans from Benjamin Reece on Vimeo.

Le armi nascoste di Vim

di *aLeX*, 14 September 2008 20:43

vimCerto che non si finisce mai di imparare… dopo quasi 10 anni di utilizzo scopro solo oggi che Vim può editare direttamente file anche via ftp, scp, rcp!!

vim ftp://user@server/directory/file

Storage USB e mount point

di *aLeX*, 13 September 2008 13:14

Problema: come tutti ormai vivo con quantità abnormi di dati memorizzate su dispositivi usb esterni. Come fare per avere questi dati sempre a disposizione sullo stesso “mount point” in linux?hd

Soluzione: ci sono 2 possibilità; la prima é quella di editare i files di regole di udev (ormai tutte le distribuzioni lo utilizzano) in modo da identificare il dispositivo hardware e assegnargli cosi’ un nome unico all’interno dello pseudo filesystem “dev”. Una volta ottenuto questo non resta che inserire in fstab la riga corretta per il montaggio del filesystem. Non é nulla di particolarmente complicato ma, come dicevo, c’é un’altra soluzione che é ancora piu’ semplice.
Quasi tutte le distribuzioni moderne hanno abilitata la funzione di automount dei dispositivi usb; bene, il punto di mount utilizzato in maniera predefinita é la “label” del filesystem che deve essere montato (se presente). Quindi l’unica cosa da fare se volete avere un mount point fisso per il vostro filesystem non é altro che impostare una label a vostro piacimento per tutti i dispositivi usb, quando li collegherete ve li troverete montati automaticamente in /media/<label>. Una guida su come impostare la label per i tutti i filesystem linux la trovate qui.
Inoltre, se avete necessità di impostare delle opzioni di mount avanzate, potete utilizzare in ogni caso il file fstab prendendo come device /dev/disk/by-label/<label> e forzare il punto di mount o le opzioni come meglio credete.

Panorama Theme by Themocracy