Ricerca nel database

Aperto da Night Raider, 23 Ottobre 2015, 14:09:52

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Night Raider

Salve a tutti, recentemente mi sto scontrando con la gestione degli archivi; per poter trattare una notevole quantità di dati sto lavorando con il database per eccellenza, il caro "Ascesso".
Premesso che in merito sono un assoluto neofita, vorrei sottoporvi un problema:
ho un insieme di dati riportato in una tabella (che di seguito definirò tabella 1) ed un ulteriore insieme in un'altra tabella (tabella 2). Ho la necessità di verificare all'interno di quali record della tabella 2, compaia (in almeno un campo) uno dei valori di un campo della tabella 1.
L'applicazione dei filtri nei campi mi permette di svolgere tale operazione per un valore (e per un campo) alla volta, il che con molti valori da controllare diventa pazzesco; in pratica, quindi, avrei bisogno di applicare a DUE campi della tabella 2 un filtro costituito dall'insieme dei valori elencati in un campo della tabella 1.
Sicuramente il tutto è fattibile mediante una query ma non ho la più pallida idea di come impostarla...supponendo che le due tabelle si chiamino Tabella_1 e Tabella_2 e che i relativi campi si chiamino Elenco (per la tabella 1, ossia quello i cui valori devono essere cercati nella tabella 2) e Valore_1 e Valore_2 (per la tabella 2, ossia i capi nei quali devono essere ricercati i valori della tabella 1), esiste in questo universo una mente in grado di scrivere il codice SQL da copiare nella struttura della query ed alleviarmi così da una profonda disperazione?
...we'll meet again...Somewhere in time

Glide

Ciao Night Raider,

ben tornato in questa Community ;).

Supponendo di aver ben compreso la tua esigenza, una possibile soluzione in SQL potrebbe essere la seguente.


SELECT
 T2.*
FROM
 tabella_1 AS T1,
 tabella_2 AS T2
WHERE
 (T1.Elenco = T2.Valore_1)
OR
 (T1.Elenco = T2.Valore_2)


In ottica performance, che potrebbe essere necessaria in funzione della dimensione delle tabelle o della struttura delle stesse, andrebbe leggermente ottimizzata ma in linea di principio puoi partire da quel codice.

Fammi sapere.

Ciao ciao

Night Raider

Salve Glide :)
Ho provato ad inserire il codice SQL (ovviamente adattando i nomi dei relativi campi e tabelle) ma purtroppo non va...l'unico risultato è quello di ottenere un report vuoto. Ho provato ulteriormente a fare degli "esperimenti" adattando query con le quali mi sono scontrato nel corso del tempo ma a quanto pare il problema è che il programma per leggere i valori del campo deve essere indirizzato mediante una routine in VB...con tutti i miei esperimenti (cioè adattando la query che mi hai fornito con i parametri di quelle che ho cretao nel tempo) sono riuscito ad ottenere un report sempre vuoto ma stavolta con le intestazioni dei campi per i quali volevo ottenere il risultato. Qualche suggerimento?
...we'll meet again...Somewhere in time

Glide

Ciao Night Raider,

il primo suggerimento coincide con il lanciare la query sul database a mano, ovvero senza passare per l'applicazione VB. In questo modo puoi capire perchè il result set sia vuoto.

E inoltre, siamo sicuri che ci siano realmente le corrispondenze tra le tabelle che hai indicato nel thread di apertura e, soprattutto, che lo siano come hai specificato, ad esempio T1.Elenco = T2.Valore_1 ?

Fammi sapere.

Ciao ciao

Night Raider

Salve Glide,
dopo una dura lotta, ne siamo venuti a capo...come ti dicevo nel post precedente siamo stati costretti a ricorrere a delle routine in VB; la procedura è stata lunga e tediosa ma alla fine funziona. Le corrispondenze tra le tabelle c'erano (ovviamente per semplicità di esplicazione qui le avevo chiamate 1, 2 ecc...) ed infatti con le routine ha dato i risultati necessari. Se sei interessato a vedere cosa abbiamo fatto (dico abbiamo ma io ho fatto ben poco :ahah: :ahah: ) posso farti avere una copia del file...
...we'll meet again...Somewhere in time

Glide

Ciao Night Raider,

mi fa piacere che hai risolto :)

Nessun problema se mi vuoi inviare una copia del file :h ;)

Ciao ciao