Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Aiuto per Query Access
venerdì 10 maggio 2013 - 16.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
salvob
Profilo
| Newbie
8
messaggi | Data Invio:
ven 10 mag 2013 - 16:51
Salve a tutti sono nuovo! :)
Avrei bisogno di un aiutino con una query su un piccolo db access didattico, ho i seguenti dati divisi in 3 tabelle:
Tabella DB
ID,Prodotto,Prezzo
01,lacca,1,20
02,gel,1,50
xx,ecc,ecc.
Tabella TAB1
ID,Prodotto,Prezzo,IDdb
AA01,lacca,1,10,01
AA02,gel,1,30,02
AAxx,ecc,ecc.,XX
Tabella TAB2
ID,Prodotto,Prezzo,IDdb
AA01,lacca,1,50,01
AA02,gel,1,60,02
AAxx,ecc,ecc.,XX
Praticamente ci sono gli stessi prodotti ma con prezzi ed id differenti, dovrei creare una query o una ulteriore tabella comparativa in cui viene riportato per ogni prodotto, quello che costa meno sulle tre tabelle..
Come fare?
Grazie e scusate se la domanda è troppo banale.
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
ven 10 mag 2013 - 17:06
select DB.ID,DB.Prodotto, iif(DB.Prezzo< TAB1.Prezzo,iif(DB.Prezzo<TAB2.Prezzo,DB.Prezzo,iif(TAB1.Prezzo<TAB2.Prezzo,TAB1.Prezzo,TAB2.Prezzo))) as minorprezzo
from db inner join tab1 on DB.ID=TAB1.IDdb inner join TAB2 on DB.ID=TAB2.IDdb
a braccio
DINOXET
__________________________________________
impossible is only a word
salvob
Profilo
| Newbie
8
messaggi | Data Invio:
dom 26 mag 2013 - 10:29
Grazie dinoxet, diciamo che il sistema potrebbe funzionare come lo hai previsto tu, solo che avevo tralasciato alcuni dettagli che quando mi avevano spiegato l'esercizio non erano chiari.
In realtà DB rappresenterebbe il database dei prodotti di un negozio, mentre le altre tab potrebbero essere i listini dei fornitori dove i prezzi differiscono, nelle altre tab non esistono necessariamente tutti i prodotti in vendita nel negozio, potrebbero esisterne altri non corrispondenti ai nostri. Trovando il valore minimo dalle tabelle con degli if annidati non avrei la possibilità di aggiungere poi altri fornitori senza dover andare a modificare la query.
Per correttezza verso chi ci legge spiego come ho interpretato il tuo suggerimento:
In realtà la prima cosa che ho fatto è stato fare una query che crea un elenco del genere:
[DB.prodotto] [TAB1.prezzo] [TAB2.prezzo] [TAB3.prezzo] [TAB4.prezzo] ecc.
Utilizzando il sistema degli if annidati per calcolare il minor prezzo, si rischia di creare un'espressione mostruosamente lunga, altra ipotesi sarebbe quella di ciclare con un while tutti i valori, ma come determinare "quanti" fornitori ho per potere realizzare una soluzione che preveda che quei valori possano aumentare?
Inoltre, come dicevo sopra TAB1,TAB2,ecc. non contengono necessariamente gli stessi record di DB (mea culpa non l'avevo detto prima ma ripeto mi era stato spiegato male) quindi quando l'if mette a confronto un valore NULL con uno numerico, quello NULL risulta minore e quindi il miglior prezzo risulterebbe NULL, si dovrebbe complicare ancora di piu' l'espressione aggiungendo un iif che verifica che il dato sia valorizzato numericamente.
Poi vorrei per l'appunto potere inserire nell'elenco un ulteriore colonna con il prezzo minimo, quindi sto cercando una funzione da potere inserire in un espressione che mi calcoli il valore minimo dati una serie di campi dello stesso record, pensavo che la funzione MIN() poteva aiutarmi, ma si limita a calcolare il minimo di un gruppo di valori da record multipli e non accetta piu' di un argomento, esiste anche la funzione DMIN() che a quanto pare non tiene conto dei valori NULL ma dalla guida di access non sono riuscito a capire se posso sfruttarla o meno, qualcuno la conosce bene?.
In realtà da tutto quello che sto leggendo (anche materiale cartaceo) sembra che questa cosa in modo nativo sia difficile da fare... è possibile una cosa del genere? La persona che mi ha commissionato questo esercizio sta cercando di farmi imparare Access per come viene usato nella sua azienda e mi dice che creare un piccolo database del genere è il primo passo per capire come funziona il loro sistema, mi ha anche prestato il libro "Access for 2007 for dummies all in one" e anche li sfogliando sfogliando non riesco a trovare una soluzione immediata, mentre la persona di cui parlavo sostiene che esiste una funzione che in maniera molto semplice mi aiuterà a risolvere il problema.
Quando ne abbiamo parlato, ha accennato all'utilizzo dei Report per creare un riepilogo dei prodotti con il miglior prezzo e una colonna con l'etichetta della tabella da cui il prezzo risulta il piu' basso per indicare il fornitore.
Vi chiedo un aiuto/supporto morale :D
CorriCorrado
Profilo
| Junior Member
86
messaggi | Data Invio:
mar 28 mag 2013 - 14:30
Ciao,
ti lascio il mio input: perchè necessiti di tutte queste tabelle, di fatto una clone dell'altra?
In verità potresti inserire il solo campo 'idTblNegozio' (o idTblFornitore), costruendo una tabella anagrafica di possibili altri negozi, ed inserire tutti i prodotti nella stessa tabella; in questo modo non devi creare una funzione di ricerca su 'n' tabelle, che richiedono tempo di esecuzione.
Il risultato sarà una tabella con un numero maggiore di record differenziabili sotto il campo idTblNegozio; a questo punto, potrai eseguire delle query per prodotto, che ti diranno immediatamente se il prodotto è più conveninente nel tuo negozio o nella concorrenza/fornitore, nonchè puoi costruire sempre tramite query un calcolo del gap tra il prezzo della merce in magazzino e quella presso altri fornitori.
Spero di aver capito lo scopo del tuo calcolo.
Corrado
Corrado
salvob
Profilo
| Newbie
8
messaggi | Data Invio:
gio 30 mag 2013 - 15:49
Ciao Corrado,
In realtà, io avrei adottato il tuo approccio al problema, se non fosse che purtroppo i dati di cui dispongo sono già organizzati nel modo in cui ho descritto e non è possibile cambiarlo.
La persona che mi ha commissionato l'esercizio continua a sostenere che la cosa sia fattibile con una funzione...
Help :(
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
gio 30 mag 2013 - 17:12
ci puoi postare il file access con dati di esempio chiaramente.
:)
DINOXET
__________________________________________
impossible is only a word
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !