Newsgroup: it.comp.software.database
Titolo: Query "nidificata"

Attualmente ho questa query:
Query_Lavorate = "(SELECT [PROGRESSIVO] FROM [prd_TB_ELENCO_LAVORAZIONI]"
& _
" WHERE [Postazione_Attiva]=" & Param.Postazione_Attiva & _
" AND [Elenco_Lavorazione]=" & .Elenco_Lavorazione & _
" AND [Stato_Commessa]<>" & stato_commessa_chiusa & ")"
Query = "SELECT * FROM [SERT_PROGPROD_BREVE] " & _
        "WHERE [PROGRESSIVO] IN " & Query_Lavorate
E fino a qui funziona tutto.
Ora io vorrei fare un JOIN con il recordset risultante da questa query con
la tabella di nome prd_GL_SERT_ORDINI. I campi comuni di queste due
tabelle hanno nome PROGRESSIVO 
Non riesco a scrivere nulla che mi venga accettato da visual basic.
Qualcuno mi sa aiutare?
Se puņ essere utile uso VB6, ADO e mi collego a un sql server
Grazie in anticipo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Qualcuno mi sa aiutare?
Per la prossima volta: Qual'è il messaggio d'errore che ottieni?
Benjamin

 Se puň essere utile uso VB6, ADO e mi collego a un sql server
La "query" definitiva (da sostituire i nomi variabili coi valori) 
dovrebbe risultare cosě:
SELECT * FROM SERT_PROGPROD_BREVE breve WHERE PROGRESSIVO IN
(SELECT PROGRESSIVO FROM prd_TB_ELENCO_LAVORAZIONI
WHERE Postazione_Attiva = Postazione_Attiva
Elenco_Lavorazione = Elenco_Lavorazione
AND Stato_Commessa<> stato_commessa_chiusa)
JOIN prd_GL_SERT_ORDINI ordini ON breve.progressivo = ordini.progressivo
nota: ho usato la SELECT - IN come avevi scritto tu, ma la sostituirei 
con una join:
SELECT * FROM prd_GL_SERT_ORDINI ordini
JOIN SERT_PROGPROD_BREVE breve
ON breve.PROGRESSIVO = ordini.PROGRESSIVO
JOIN prd_TB_ELENCO_LAVORAZIONI lavor
ON breve.PROGRESSIVO = lavor.PROGRESSIVO
WHERE lavor.Postazione_Attiva = Postazione_Attiva
AND lavor.Elenco_Lavorazione = Elenco_Lavorazione
AND lavor.Stato_Commessa<> stato_commessa_chiusa
Ovviamente da controllare, l'ho scritta molto "ad occhio".
Se usi SQL Server ti consiglio di usare gli strumenti del db (c'č ancora 
il query analyzer?) per scriverti le query, e poi integrarle nel codice, 
altrimenti rischi di sommare errori SQL e applicativi.
Ciao,
Paolo

 altrimenti rischi di sommare errori SQL e applicativi.
Vorrei chiaramente prima provarla nel database solo che non riesco a
scrivere la sintassi corretta...


 Per la prossima volta: Qual'è il messaggio d'errore che ottieni?
Incorrect syntax near the keyword 'JOIN'
Intanto grazie


 Incorrect syntax near the keyword 'JOIN'
E se al posto di JOIN metti INNER JOIN? Oppure un join implicito?
Saluti,
	Benjamin

 E se al posto di JOIN metti INNER JOIN? Oppure un join implicito?
Se metto INNER JOIN ottengo "Incorrect syntax near the keyword 'INNER'"
Se metto CROSS JOIN ottengo "Incorrect syntax near the keyword 'CROSS'"
Se metto LEFT JOIN ottengo "Incorrect syntax near the keyword 'LEFT'"


 scrivere la sintassi corretta...
Prova cosě:
SELECT * FROM [SERT_PROGPROD_BREVE] breve
JOIN [prd_GL_SERT_ORDINI] ordini
ON breve.progressivo = ordini.progressivo
WHERE [breve.PROGRESSIVO]
IN (SELECT [PROGRESSIVO] FROM [prd_TB_ELENCO_LAVORAZIONI]
Where [Postazione_Attiva]=7
AND [Elenco_Lavorazione]=0
AND [Stato_Commessa]<>2)
Ciao,
Paolo

Andrea LAV ha scritto:
 > SELECT * FROM [SERT_PROGPROD_BREVE] breve WHERE [PROGRESSIVO] IN (SELECT
 > [PROGRESSIVO] FROM [prd_TB_ELENCO_LAVORAZIONI] Where 
[Postazione_Attiva]=7
 > AND [Elenco_Lavorazione]=0 AND [Stato_Commessa]<>2) JOIN
 > [prd_GL_SERT_ORDINI] ordini ON breve.progressivo = ordini.progressivo
 >
 > Mi dice che c'è un errore si sintassi "near JOIN"
In effetti quella JOIN messa dopo la WHERE [...] IN non mi pare molto 
corretta...
 > Vorrei chiaramente prima provarla nel database solo che non riesco a
 > scrivere la sintassi corretta...
Prova così:
SELECT * FROM [SERT_PROGPROD_BREVE] breve
JOIN [prd_GL_SERT_ORDINI] ordini
ON breve.progressivo = ordini.progressivo
WHERE [breve.PROGRESSIVO]
IN (SELECT [PROGRESSIVO] FROM [prd_TB_ELENCO_LAVORAZIONI]
Where [Postazione_Attiva]=7
AND [Elenco_Lavorazione]=0
AND [Stato_Commessa]<>2)
Ciao,
Paolo

 AND [Stato_Commessa]<>2)
Direttamente da sql server
Msg 207, Level 16, State 1, Line 1
Invalid column name 'breve.PROGRESSIVO'.
Anche da visul basic errore simile.
Ovviamente sia in [SERT_PROGPROD_BREVE] che in [prd_GL_SERT_ORDINI] che in
[prd_TB_ELENCO_LAVORAZIONI] c'è la colonna di nome PROGRESSIVO...


 Se metto LEFT JOIN ottengo "Incorrect syntax near the keyword 'LEFT'"
Guarda che cross join e left join sono cose abbastanza diverse da quello
che vuoi fare tu!
Benjamin

 che vuoi fare tu!
Si ,lo so era per mostrare che comunque c'era un errore nella sintassi e
non dipendeva dal tipo di join interessato.
