Problema con Query

martedì 19 giugno 2007 - 09.05

elsinore Profilo | Junior Member

Ciao,
chiedo ancora una volta il vostro aiuto...

io ho questa query....che funziona benissimo

SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

ora dovrei aggiungere al filtro di ricerca....un altro campo di un'altra tabella.... il campo TXT della tabella ATT....dove CMP.ID_CMP=ATT.ID_CMP


ho provato così

SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP, c.TXT
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT AS c ON CMP.ID_CMP=ATT.ID_CMP
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND ATT.TXT = 'IRF'
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

ma mi dice "missing keywords".....

filippo.monti Profilo | Junior Member

Penso che il problema risieda qui:
"INNER JOIN ATT AS c"
Ciao
Filippo

elsinore Profilo | Junior Member

ci sono riuscito


SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT ON CMP.ID_CMP=ATT.ID_CMP
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND ATT.TXT = 'IRF'
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

così funziona.....ora mi sono accorto che devo aggiungere un'altra tabella nella ricerca....
ho aggiunto
LEFT JOIN TPLATT ON ATT.ID_TPLATT=TPLATT.ID_TPLATT...è collegata con la tabella ATT tramite ID_TPLATT....

così facendo

SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT ON CMP.ID_CMP=ATT.ID_CMP
LEFT JOIN TPLATT ON ATT.ID_TPLATT=TPLATT.ID_TPLATT
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND ATT.TXT = 'IRF'
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

non dovrebbe darmi almeno lo stesso risultato di prima?

grazie!

filippo.monti Profilo | Junior Member

Il problema risiede nel fatto che in questa query
SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP, c.TXT
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT AS c ON CMP.ID_CMP=ATT.ID_CMP
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND ATT.TXT = 'IRF'
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

chiami la tabella ATT come c
"ATT AS c"
e poi sotto nella WHERE la usi come ATT
"AND ATT.TXT = 'IRF'"
non lo provata la query ma penso che il problema risieda lì...
Ciao

Filippo

elsinore Profilo | Junior Member

no se guardi bene non la chiamo più così..... infatti la prima query funziona bene....

elsinore Profilo | Junior Member



nessuno mi sa dare una manina? provo a spiegarmi meglio... io ho questa query che funziona bene....

SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT ON CMP.ID_CMP=ATT.ID_CMP

WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND ATT.TXT = 'IRF'
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP


ora dovrei cercare una stringa anche in un altra tabella (TPLATT)....nella tabella ATT in corrispondenza di ID_ATT c'è anche ID_TPLATT che è presente appunto in TPLATT...e da questa tabella dovrei prendere ciò che è presente nel campo DESTPLATT...

ho provato così ma non mi ritorna nulla
SELECT a.CODCMP, a.MOD2, a.VAR2, a.DESCMP, a.EXTRA_DESCRIPTION, a.ID_SEDE, a.ID_CMP
FROM
CMP a, (SELECT SUBSTR(CODCMP,0,10) PROGETTO, max(CODCMP) CODCMP FROM CMP
INNER JOIN ATT ON CMP.ID_CMP=ATT.ID_CMP
LEFT JOIN TPLATT ON ATT.ID_TPLATT=TPLATT.ID_TPLATT
WHERE
ID_SEDE = 5 AND (CODCMP LIKE ('5253639%')) AND CMP.ID_STA <> 904 AND (ATT.TXT LIKE 'IRF%' OR TPLATT.DESTPLATT LIKE 'pin%' )
GROUP BY SUBSTR(CODCMP,0,10)) b where a.CODCMP=b.CODCMP

pensavo mi ritornasso almeno il risultato di prima...
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5