- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Stringa sql che utilizza più tabelle da riportare in ASP
-
Stringa sql che utilizza più tabelle da riportare in ASP
Ciao a tutti,
spero di riuscire a spiegare il mio problema...In Access ho realizzato le seguenti query:
-
Query "ELENCOID":
SELECT COMPILAZIONI.ID
FROM COMPILAZIONI
WHERE (((COMPILAZIONI.IDQUESTIONARIO)=4)); -
QUERY "TEST":
SELECT RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA, Count(ELENCOID.ID) AS ConteggioDiID
FROM RISPOSTE INNER JOIN ELENCOID ON RISPOSTE.IDCOMPILAZIONE = ELENCOID.ID
GROUP BY RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA
HAVING (((RISPOSTE.IDDOMANDA)=6));
come potete vedere la query "TEST" utilizza il risultato della query "ELENCOID".
Ora dovrei riuscire a ricavare un'unica stringa SQL che mi permetta di raggiungere lo stesso risultato, in quanto successivamente la devo utilizzare in una pagina ASP con:set res = conn.execute (stringasql_unica_e_completa)
Potete aiutarmi?
Grazie in anticipo
-
-
Prova così...
SELECT RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA, Count(COMPILAZIONI.ID) AS ConteggioDiID
FROM RISPOSTE INNER JOIN COMPILAZIONI ON RISPOSTE.IDCOMPILAZIONE = COMPILAZIONI.ID
GROUP BY RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA
HAVING (RISPOSTE.IDDOMANDA=6 AND COMPILAZIONI.IDQUESTIONARIO = 4);La sintassi dell'SQL di Access non la ricordo più tanto, ma credo che impostando (COMPILAZIONI.IDQUESTIONARIO = 4) nell'HAVING o magari nella WHERE dovrebbe funzionare...
Ciao
-
Ciao Artcava,
ti ringrazio per la tua risposta!Ho fatto il copia incolla della tua stringa in Access, ma compare l'errore "Impossibile eseguire una query che non include l'espressione "RISPOSTE.IDDOMANDA=6 And COMPILAZIONI.IDQUESTIONARIO=4" specificata come parte di una funzione di aggregazione.
Purtroppo ho sempre fatto query molto semplici ed in questo caso mi trovo impreparato.
Tu sapresti aiutarmi a capire questo errore ?PS. Il linguaggio SQL utilizzato da Access è identico a quello utilizzato in ASP, solo che Access aggiunge sempre il nome della tabella anche dove non serve ad es. Access scrive:
SELECT COMPILAZIONI.ID
FROM COMPILAZIONI
WHERE (((COMPILAZIONI.IDQUESTIONARIO)=4));ma si può benissimo scrivere
SELECT ID FROM COMPILAZIONI WHERE IDQUESTIONARIO=4è la stessa identica cosa ed Access accetta anche quest'ultima stringa (in realtà la auto-corregge come vuole lui )
-
Ecco la risposta:
SELECT RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA, Count(COMPILAZIONI.ID) AS ConteggioDiID
FROM COMPILAZIONI INNER JOIN RISPOSTE ON COMPILAZIONI.ID = RISPOSTE.IDCOMPILAZIONE
GROUP BY RISPOSTE.RISPOSTA, RISPOSTE.IDDOMANDA, COMPILAZIONI.IDQUESTIONARIO
HAVING (((RISPOSTE.IDDOMANDA)=6) AND ((COMPILAZIONI.IDQUESTIONARIO)=4));L'ho scoperto per caso, subito dopo aver scritto il precedente messaggio.
Grazie per il tuo aiuto!
-
Perfetto, mancava solo COMPILAZIONI.IDQUESTIONARIO nella GROUP BY
Buon lavoro!
-
Non so come cancellare questo messaggio quindi l'ho modificato