Newsgroup: it.comp.appl.access
Titolo: Query

Ho una tabella con Fornitore1,Fornitore2,Fornitore3,
QtaFornitore1,QtaFornitore2,QtaFornitore3.
I campi Fornitore(n) sono di tipo testo mentre QtaFornitore(n) sono di tipo
numerico.
Io vorrei creare una query ordinata per fornitore(n) che ha quantità + alta.
Qualcuno mi sa dire qualche indicazione?
Grazie, Alberto

 ha scritto nel messaggio
news:1gQP5.3348$wW2.1...@news1.giganews.com...

Ordina la query per QuantitàFornitore; dove è il problema?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------


Naturalmente l'ordinamento devi farlo in ordine decrescente ;-)


 Ordina la query per QuantitàFornitore; dove è il problema?
Il problema è che la sua tabella non è normalizzata. Non ha una tabella con
i campi
Fornitore e Quantità
e poi come record
Fornitore1 Quantità1
...
FornitoreN QuantitàN
ma ha 6 campi in tutto. Quindi a priori non sai su quale campo quantità
ordinare
Antonio

 wrote in message
news:%XQP5.48521$BF.17...@news.infostrada.it...


 ha scritto nel messaggio

Beh, tutti i gusti son gusti!!
Io lo farei con una query che ha il seguente codice SQL:
SELECT Tabella1.Fornitore1, Tabella1.Fornitore2, Tabella1.Fornitore3,
Tabella1.QtaFornitore1, Tabella1.QtaFornitore2, Tabella1.QtaFornitore3,
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[F
ornitore3],[Fornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[Fornitore3],[
Fornitore1])) AS FornOrd
FROM Tabella1
ORDER BY
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[F
ornitore3],[Fornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[Fornitore3],[
Fornitore1]));
e se poi la chiave di ordinamento non deve essere visibile nella query:
SELECT Tabella1.Fornitore1, Tabella1.Fornitore2, Tabella1.Fornitore3,
Tabella1.QtaFornitore1, Tabella1.QtaFornitore2, Tabella1.QtaFornitore3
FROM Tabella1
ORDER BY
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[F
ornitore3],[Fornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[Fornitore3],[
Fornitore1]));


 wrote in message
news:SzRP5.48732$BF.17...@news.infostrada.it...


Roberto sei GRANDE !!!
Grazie :-)


 Giusto
Per favore scrivi dopo ilquoting..
Comunque, non hai pensato a cambiare la struttura della tabella?
Antonio


Scusa... un'ultima cosa.
Se io volessi avere tutti e sei i campi cioè:
FornitoreConQuantitàMassima              (MaxForn)
QuantitàFornitoreConQuantitàMassima (MaxQta)
FornitoreConQuantitàMedia                 (MedForn)
QuantitàFornitoreConQuantitàMedia    (MedQta)
FornitoreConQuantitàMinima               (MinForn)
QuantitàFornitoreConQuantitàMinima  (MinQta)
Grazie ancora

 ha scritto nel messaggio
news:qASP5.12271$KJ2.2...@news2.giganews.com...

Prova questo codice SQL e fammi sapere:
SELECT Tabella1.Fornitore1, Tabella1.Fornitore2, Tabella1.Fornitore3,
Tabella1.QtaFornitore1, Tabella1.QtaFornitore2, Tabella1.QtaFornitore3,
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[F
ornitore3],[Fornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[Fornitore3],[
Fornitore1])) AS FornMax,
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[Q
taFornitore3],[QtaFornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[QtaForn
itore3],[QtaFornitore1])) AS QtaMax,
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore1]<=[QtaFornitore3],[F
ornitore1],[Fornitore3]),IIf([QtaFornitore2]<=[QtaFornitore3],[Fornitore2],[
Fornitore3])) AS FornMin,
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore1]<=[QtaFornitore3],[Q
taFornitore1],[QtaFornitore3]),IIf([QtaFornitore2]<=[QtaFornitore3],[QtaForn
itore2],[QtaFornitore3])) AS QtaMin,
IIf([Fornitore1]=[FornMax],IIf([Fornitore2]=[FornMin],[Fornitore3],[Fornitor
e2]),IIf([Fornitore1]<>[FornMin],[Fornitore1],IIf([Fornitore2]=[FornMax],[Fo
rnitore3],[Fornitore2]))) AS FornMed,
[QtaFornitore1]+[QtaFornitore2]+[QtaFornitore3]-[QtaMax]-[QtaMin] AS QtaMed
FROM Tabella1
ORDER BY
IIf([QtaFornitore1]<=[QtaFornitore2],IIf([QtaFornitore2]<=[QtaFornitore3],[F
ornitore3],[Fornitore2]),IIf([QtaFornitore1]<=[QtaFornitore3],[Fornitore3],[
Fornitore1]));
L'ordinamento è fatto sempre sul FornMax


Funziona alla perfezione !!!!
Era quello che cercavo.
Ti ringrazio, Alberto

Scusate,scusate scusate ancora!
Devo scusarmi  in particolare con Roberto che ha risolto il problema per
come l'ho esposto, ma ho fatto un'errore di valutazione.
Ho la solita tabella che contiene la RagSoc con 3 campi fornitore e 3 campi
quantità. ( i soliti forn1,2,3 e qta1,2,3)
Indicano che la RagSoc dal fornitore1 acquista quantità x di prodotto,dal
fornitore2 acquista quantità x di prodotto e dal fornitore3 acquista
quantità x di prodotto.
A questo punto dovrei stampare un report raggruppato per fornitore con le
quantità di quel fornitore in decrescente.
Potrei avere per esempio:
|      RagSoc   |  Forn1  |  Qta1  |  Forn2  |  Qta2  |  Forn3  |  Qta3  |
|      AAAAA |  Pippo  |    40    |   Pluto   |    25   |  Minnie  |   20
|
|      BBBBB  |  Pluto   |    10    |   Pippo  |    5     |  Minnie  |    2
|
|      CCCCC |  Joele   |    15    |   Pippo  |   10    |  Minnie  |    4
|
Il report di conseguenza dovrebbe darmi il seguente risultato:
Fornitore PIPPO
    AAAAA    40
    BBBBB       5
    CCCCC    10
Fornitore PLUTO
    AAAAA    25
    BBBBB     10
Fornitore MINNIE
    AAAAA    20
    BBBBB       2
    CCCCC      4
Fornitore JOELE
    CCCCC     15
Come posso fare ?
Scusatemi ancora, Alberto


Prego
--
Roberto
---------------------------------------------
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

 ha scritto nel messaggio
news:17_P5.16$DG3....@news2.giganews.com...

Fai quello che ti ha detto Antonio, cambi la struttura della tabella;
oppure, partendo da quella attuale, te ne crei una temporanea dove ogni
record contiene la ragione sociale, un solo fornitore con la relativa
quantità, ovvero per ogni record della tabella originale te ne crei tre
nella tabella temporanea.


Ok.
Grazie ancora

 Scusatemi ancora, Alberto
Ti prego di scrivere sul NG, non in mail.
Cambia la struttura della tabella mettendo solo due campi, NomeFornitore e
Quantità
Ogni record avrà nel primo campo l'ID del fornitore (garnde goduria, con una
bella tabella Anagrafica fornitori ti rintracci sempre i dati del fornitore
se vuoi), e nel secondo la quantità di quel fornitore.
In questo modo devi ordinare per quantità? Perfetto ordini semplicemente per
campo quantità!
Devi raggruppare?
Raggruppi per campo fornitore e così via...
Antonio

 wrote in message
news:b7uQ5.61974$BF.22...@news.infostrada.it...

Se ho risposto o richiesto per E-mail l'ho fatto per errore.
Scusami. :-)
Per quanto riguarda la modifica che mi hai suggerito, non potrebbe andar
bene perchè ci devono essere 3 campi
Fornitori e 3 campi per le rispettive quantità di prodotto venduto. Questi
campi vengono usati per sapere con chi
lavora maggiormente quel cliente per poi stilare una statistica sulle ditte
fornitrici del prodotto.
Ho altre possibilità secondo te ?
Grazie, Alberto

 Ho altre possibilità secondo te ?
Perchè per forza 3 campi e 3 campi?
Così il database non è normalizzato!!!
UN SOLO campo fornitore e UN SOLO campo quantità e nel primo campo potrà
andarci per ogni record uno dei 3 fornitori.
Se devi legare i record di 3 fornitori perchè magari relativi allo stesso
ordine, per dirne una, aggiungerai un altro campo, un ID o comunque un
identificatore univoco che varrà lo stesso per i 3 record...
Antonio


Forse mi sono spiegato male.
Questo non č un DB di fatturazione o altro del genere, č solo un DB di
raccolta dati dove per ogni nominativo ho a disposizioni n campi nei quali
ci metto le preferenze del nominativo, e per quamto riguarda i campi in
questione servono alla ditta, che mi ha commissionato il lavoro, per poter
capire il suo grado di penetrazione.
Per esempio io mi fornisco principalmente in ordine di quantitą di prodotti:
1 Microsoft
2 Linux
3 Mac
Se il database fosse di RED HAT linux la RED HAT potrebbe capire che sul mio
nominativo dovrebbe intervenire con delle azioni per fare in modo che io
incrementi l'acquisto dei loro prodotti.
Ecco il perchč dei 3+3 campi.

 Ecco il perchè dei 3+3 campi.
Nooone!
Qualunque cosa tu faccia con 3+3 campi, la puoi fare meglio con soli 2 campi
usando query di raggruppamento o simili!!!
Invece di mettere le 3 preferenze di un nominativo in uno stesso record,
farai 3 record ognuno dei quali avrà lo stesso ID di questo nominativo, ma
valore di preferenza diverso!!!
Esempio: i tuoi record
nominativo Donna1 Donna2 Donna3 Trombate1 Trombate2 Trombate3
Antonio Samantha Tamara Deborah 3 5 6
Bettini Paoletta Mariuccia Luisella 1/2 Tentativo Rinuncia
diventa
Antonio Samantha 3
Antonio Tamara 5
Antonio Deborah 6
Bettini Paoletta 1/2
Bettini Mariuccia Tentativo
Bettini Luisella Rinuncia
Antonio

Anche se il numero di fornitori è indefinito ?

 ha scritto nel messaggio
news:UoaS5.871$FV2....@news.infostrada.it...

Lascia perdere la domanda precedente..... mi è partita mentre ancora stavo
rimuginando.
Ma con questo sistema devo creare una nuova tabella  con 2 campi (Donna,
Trombate) + IDcliente collegato alla tabella clienti.
Ho capito bene ?
Se si devo poi inserire una sottomaschera nella maschera clienti.
Vado ancora bene ?
Ma quando vorrò fare delle ricerche con il filtro in base a maschera sia nei
campi maschera cliente che nella subform il filtro funzionerà correttamente
?
Grazie...... abbi pietà :-)