2 messaggi dal 12 dicembre 2018
Ciao a tutti,
sono anni che lavoro molto su MySQL ma ora mi trovo a dover creary delle Query su T-SQL 2014.
sicuramente mi manca qualche conoscenza di quest'ultimo, ma proprio non riesco a capire perchè nella riga LEFT JOIN dbo.ARTI_LISTINI l .. e solo in questa, a.CKY_ART da errore dicendo impossibile referenziare l'identificatore in più parti (riferito ad a a.CKY_ART), anche se lo identifico con il nome completo invece che con l'alias da lo stesso errore e non capisco cosa significa, di seguito la semplice query che genera l'errore

SELECT a.CKY_ART, c.CKY_CNT, p.NGB_LIS, l.CKY_ART , l.NPZ_LIS , p.NGB_CAT_CF_SCO
FROM dbo.ARTI a, dbo.RUDT c
LEFT JOIN dbo.PICO p on p.CKY_CNT=c.CKY_CNT
LEFT JOIN dbo.ARTI_LISTINI l on l.PRG_LISTINI =p.NGB_LIS AND l.CKY_ART= a.CKY_ART
WHERE a.CKY_ART='00' AND l.CKY_ART='00' AND c.CKY_CNT='501.00011'

ho guardato la guida di MS ( https://docs.microsoft.com/it-it/sql/relational-databases/errors-events/mssqlserver-4104-database-engine-error?view=sql-server-2017) ma non ho comunque risolto, anche perchè nella mia query è tutto referenziato e poi mi chiedo perchè solo in quella specifica riga non funziona ? nella SELECT c'è e non da problemi, nella clausola WHERE c'è e non da problemi, quindi ?

Grazie a chi mi può far capire, al momento io risolvo indicando nella clausola WHERE, sia a.CKY_ART='00' che l.CKY_ART='00', ma non mi sembra affatto una bella soluzione, in MySQL non mi è mai successo un problema del genere e neppure su oracle.

Saluti a tutti
2 messaggi dal 12 dicembre 2018
COSI' FUNZIONA, in pratica ho dovuto eliminare l'alias

SELECT dbo.ARTI.CKY_ART AS CODICE_ARTICOLO, c.CKY_CNT AS MASTRO_CONTO, cast(SUBSTRING(c.CKY_CNT, 5, 5) AS INT) AS CODICE_CLIENTE,
p.NGB_LIS AS TAB_LISTINO, l.NPZ_LIS as PREZZO_LISTINO , p.NGB_CAT_CF_SCO, vs.CKY_CATART AS CATEG_ART, vs.CSG_SCO_UNO AS SCONTO
FROM dbo.ARTI
LEFT JOIN dbo.RUDT c ON c.CKY_CNT ='501.00011'
LEFT JOIN dbo.PICO p on p.CKY_CNT=c.CKY_CNT
LEFT JOIn dbo.ARTI_LISTINI l on l.PRG_LISTINI =p.NGB_LIS AND l.CKY_ART=dbo.ARTI.CKY_ART
LEFT JOIN dbo.AMAG_SCO_CLI vs on vs.NKY_CAT_CF_SCO=p.NGB_CAT_CF_SCO AND vs.CKY_CATART=ARTI.NGB_CAT_ART_SCO

WHERE dbo.ARTI.CKY_ART='00'

Se comunque qualcuno gentilmente mi sapesse spiegare il perchè gli sarei grato.

Saluto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.