PDA

Visualizza la versione completa : query of queries (COLDFUSION - SQL)


Chris kolle
19-04-2004, 16:58
Ho un problema,devo creare una queri che prende i dati da un'altra queri creata prima vi posto il codice..


PRIMA QUERY

<cfquery name="Q_ULTIMA_OPERAZIONE_OPERAI" datasource="DB" password="password" username="username" cachedwithin="#createTimeSpan( 0,0,10,0) #">
SELECT MAX(dbo.T_DEVICE_EVENT.ISTANTE_OCCORRENZA) AS ULTIMO_ISTANTE_OCCORRENZA, dbo.T_DEVICE_EVENT.OPERATORE_1
FROM dbo.T_DEVICE_EVENT
WHERE (dbo.T_DEVICE_EVENT.TIPO_OPERAZIONE = '100' Or dbo.T_DEVICE_EVENT.TIPO_OPERAZIONE = '101')
GROUP BY dbo.T_DEVICE_EVENT.OPERATORE_1</cfquery>

SECONDA QUERY CHE PRENDE DATI DALLA PRIMA CHE IL RISULTATO DOVREBBE ESSERE "Q_OPERATORI_LOGATI"

<cfquery name="Q_OPERATORI_LOGATI" datasource="DB">
SELECT dbo.T_OPERAIO.NOME + ' ' + dbo.T_OPERAIO.COGNOME AS OPERATORE, dbo.T_DEVICE_EVENT.ISTANTE_OCCORRENZA, dbo.T_DEVICE_EVENT.OPERATORE_1
FROM dbo.T_DEVICE_EVENT INNER JOIN Q_ULTIMA_OPERAZIONE_OPERAI ON (dbo.T_DEVICE_EVENT.OPERATORE_1 = Q_ULTIMA_OPERAZIONE_OPERAI.OPERATORE_1) AND (dbo.T_DEVICE_EVENT.ISTANTE_OCCORRENZA = Q_ULTIMA_OPERAZIONE_OPERAI.ULTIMO_ISTANTE_OCCORREN ZA) LEFT JOIN dbo.T_DEVICE_EVENT.OPERATORE_1 = dbo.T_OPERAIO.MATRICOLA
WHERE ((dbo.T_OPERAIO.NOME + ' ' + dbo.T_OPERAIO.COGNOME) <> '') AND (dbo.T_DEVICE_EVENT.TIPO_OPERAZIONE = '100') </cfquery>

se qualcuno mi puo' dare un consiglio...
aspetto notizie :dh˛:

Alethesnake
19-04-2004, 22:58
scusami, non riesco bene a capire che dati deve prendere la seconda query dalla prima (sono un po' assonnato stasera)
comunque hai provato con una sub select?

qualcosa tipo:

SELECT tabella.campo FROM tabella WHERE tabella.campoChiave = (SELECT MAX(..) .. FROM .. WHERE ...)

cambia l'uguale con IN se la subselect restituisce pi¨ di un valore

:ciauz:

Chris kolle
20-04-2004, 02:00
Fin qua ci ho provato...
mi dice che odb.T_DEVICE_EVENT non lo trova come tabella ne' come alias nella query

:dh˛: uff :dh˛:

ho gia' filtrato quasi tutto
mi manca solo di rifiltrare il risultato della prima query con un'altra query ma non so come fare a utilizzare il risultato della prima query per fare la seconda

<cfquery name="OPERAI_IN" datasource="mssqlserver">
SELECT [NOME] + ' ' + [COGNOME] AS OPERATORE, odb.T_DEVICE_EVENT.ISTANTE_OCCORRENZA, odb.T_DEVICE_EVENT.OPERATORE_1
FROM T_DEVICE_EVENT LEFT JOIN T_OPERAIO ON T_DEVICE_EVENT.OPERATORE_1=T_OPERAIO.MATRICOLA
WHERE (
SELECT MAX(odb.T_DEVICE_EVENT.ISTANTE_OCCORRENZA) AS ULTIMO_ISTANTE_OCCORRENZA, odb.T_DEVICE_EVENT.OPERATORE_1
FROM T_DEVICE_EVENT
WHERE odb.T_DEVICE_EVENT.TIPO_OPERAZIONE = '101' OR odb.T_DEVICE_EVENT.TIPO_OPERAZIONE = '101'
GROUP BY odb.T_DEVICE_EVENT.OPERATORE_1 )
= odb.T_DEVICE_EVENT.OPERATORE_1 AND odb.T_DEVICE_EVENT.OPERATORE_1 = '100'
ORDER BY odb.T_DEVICE_EVENT.ISTANTE_OCCORRENZA</cfquery>

qualcuna sa come fare la query di una query ????

con asp etc etc ce la faccio...

:dh˛: :dh˛: :dh˛: :dh˛: :dh˛: :dh˛: :dh˛: :dh˛:

Loading