Query molto difficile

lunedì 20 agosto 2007 - 16.25

spidermanbully Profilo | Newbie

Salve a tutti,
spero vivamente possiamte aiutarmi.
Ho un database formato access 2003 che contiene una sola tabella.
La tabella è composta dai seguenti campi:
id=chiave primaria il tipico contatore
etichetta=numerico, rappresenta un'etichetta barcode
DataOra= campo data nel formato "gg/mm/aa hh:mm:ss"
scarto= può assumere valore 0 oppure 1
processo= letterale rappresente il test eseguito
Valore= numerico
limiteL=numerico
limiteH=numerico

Il database raccoglie i dati di un banco di testing dove vengo testati dei prodotti.
Ogni prodotto è identificato da un'etichetta barcode univoca (campo etichetta), e subisce 12 test (campo processo), quindi per ogni pezzo vengono scritti 12 records nel db aventi ID crescenti e stesso valore del campo Dataora.
Se il prodotto non dovesse superare il test viene messo a 1 il campo scarto per tutti i 12 record riguardanti quel singolo pezzo.
il campo valore è il risultato del test, mentre limiteL e limiteH sono i limiti ammessi.
Un pezzo scarto può essere riprocessato in momento successivo e/o nei giorni sucessivi, in questo caso si avranno altri 12 record riguardati quell'etichetta che avranno ID e il campo DataOra diversi dai precedenti

Dopo questa piccola descrizione vi espongo la query:
devo determinare le causali dello scarto cioè a quali test (campo processo) vengono scartati i pezzi.
Ora siccome un prodotto scarto lo posso riprocessare a me mi interessano solo le causali del primo scarto per ogni pezzo.
Spero di esser stato chiaro.

non posso modificare il db.
ps. se mi dite come si fa posso allegare il db.

Aiutatemi vi prego.
Saluti
Gianluca
spidermanbully@gmail.com

alx_81 Profilo | Guru

>Salve a tutti,
Ciao!

>non posso modificare il db.
peccato
>ps. se mi dite come si fa posso allegare il db.
se riesci a passarmi il database faccio la query con i dati effettivi..
>
>Aiutatemi vi prego.


Alx81 =)

http://blogs.dotnethell.it/suxstellino

denis.basei Profilo | Senior Member

Ho cercato di ricostruire la tua situazione ed ho fatto una prova. Allego un file con un pdf che rappresenta graficamente la query. Prova a vedere se può esserti utile.



Ciao

Denis

spidermanbully Profilo | Newbie

Ciao, in allegato il data base

alx_81 Profilo | Guru

>Ciao, in allegato il data base
Ok, la query che ti serve dovrebbe essere questa:
SELECT Etichetta , MIN(DataOra) AS MinData , Nome FROM Risultati WHERE Scarto = 1 GROUP BY Etichetta , Nome ORDER BY Etichetta

ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

spidermanbully Profilo | Newbie

Ciao in allegato trovi un file .xls dove devono finire i dati della query.
Quello che devo fare io è contare per ogni giorno il numero di pezzi scartati ad ogni test:

26/07/08 27/07/08 28/07/08
test 1 10 5 8
test 2 8 11 15

solo che un pezzo scarto lo posso riprovare più volte nello stesso giorno e nei gioni a seguire.
Quello che mi interessa contare è l'esito solo la prima volta che facci i test.
se vuoi puoi contatarmi su skype che magari tispiego meglio:
user: gianluca bugliani
grazie ciao

alx_81 Profilo | Guru

>Ciao in allegato trovi un file .xls dove devono finire i dati
>della query.
Spero che sia quello che richiedi..
magari controlla i risultati nell'allegato
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

spidermanbully Profilo | Newbie

Grazie per l'interessamento.
la tua query:

SELECT Etichetta, MIN(DataOra) AS MinData, Nome
FROM Risultati
WHERE Scarto=1
GROUP BY Etichetta, Nome
ORDER BY Etichetta;

non tiene conto (erchè non te l'ho detto) che un pezzo (cioè un'etichetta ) scarto può essere ritestato più volte sia nella stessa giornata sia nei giorni sucessivi.
Questo implica che selezionando min(dataora) elimino automaticamente il pezzo se è stato provato nel giorno successivo.

alx_81 Profilo | Guru

>Questo implica che selezionando min(dataora) elimino automaticamente
>il pezzo se è stato provato nel giorno successivo.
La mia query ricava la prima data in cui il pezzo è stato scartato, semplicemente, ricavando anche il nome del test..
quindi ricava sempre i 12 con la prima data disponibile..
non è quello che ti serve?
Alx81 =)

http://blogs.dotnethell.it/suxstellino
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5