Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-03-2008, 13:01   #1
amedeoviscido
Senior Member
 
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
[SQL] Cercare valori in tabella con chiave "simile"

Ciao, ho un problema che ho già risolto, ma vorrei da voi un consiglio.
Il problema è individuare le righe che hanno parte della chiave in comune. Supponiamo di avere la tabella PROVA(ID) con ID chiave primaria.
Ho bisogno di trovare le righe tali che ID della 1° riga sia inserito IN FONDO alla 2° riga. In pratica, facciamo un esempio:

PROVA
1234567890
12345
67890

Mi deve trovare 67890 unitamente al riferimento 1234567890.

Io ho risolto così (PostgreSQL):

SELECT B.id, A.id FROM prova A, prova B WHERE A.id<>B.id AND strpos(A.id,B.id)>0

Ovvero con strpos, controllo che l'ID di B faccia parte dell'ID di A.
Tutto ok direte voi: non proprio direi io.
Con 5000 righe ci impiega 1 minuto, non sarebbe un problema, se non per il fatto che per fare un report ne deve fare a centinaia di queste query!
Io prima facevo semplicemente:

SELECT A.id,B.id FROM prova A JOIN prova B ON A.id=B.id
E ci metteva 15 ms. Il problema è che adesso le chiavi sono fatte in modo tale che se una finisce come l'altra allora deve trovare la "primaria".
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17
Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo
amedeoviscido è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2008, 14:07   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Io farei cosi':

Codice:
SELECT A.ID,B.ID FROM prova A,prova B WHERE A.id<>B.id
   AND length(A.ID)>=length(B.ID)
   AND SUBSTR(A.ID,length(A.ID)-Length(B.ID),length(B.ID))=B.ID
Ovvero come prima, ma come filtro anche
ma solo per i record di A la cui ultima parte di A.ID, lunga quanto B.ID, sia esattamente uguale a B.ID

(la clausola sulle lunghezze sarebbe da leggersi come:
ma solo tra le righe che hanno la lunghezza di A.ID >= alla lunghezza di B.ID,
altrimenti potrebbero effetti indesiderati a seconda del implementazione della SUBSTR su Postgres, in presenza di un indice di partenza negativo)

forse addirittura si puo' fare cosi':
Codice:
SELECT A.ID,B.ID FROM prova A,prova B WHERE A.id<>B.id
   AND length(A.ID)>=length(B.ID)
   AND SUBSTR(A.ID,length(A.ID)-Length(B.ID))=B.ID
Sperando che la Substring abbia il significato di "fino alla fine della stringa" quando non c'e' il terzo parametro
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 07-03-2008, 23:42   #3
amedeoviscido
Senior Member
 
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
Grazie per la risposta, domani faccio delle prove in ufficio (cronometrate) e ti faccio sapere, sarai curioso!
In effetti controllare la posizione di una stringa all'interno di un'altra è meno efficiente che il confronto diretto di due stringhe, a rigor di logica dovrebbe essere più veloce, vedremo!
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17
Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo

Ultima modifica di amedeoviscido : 07-03-2008 alle 23:47.
amedeoviscido è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
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: 22:27.


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