Ciao a tutti!![]()
Prima di venire al problema vorrei soffermarmi sulla struttura delle tabelle e su ciò che da esse vorrei estrarre.
La struttura delle 2 tabelle è la seguente:
PERSONE
=======
IDpersona
nome
cognome
eta
città
altezza
occhi
capelli
(ed altri n. campi analoghi...)
FOTO
=======
filename_p
filename_g
IDpersona
Il mio obiettivo sarebbe quello di tirare fuori, tramite un response.write, una serie di records (i cui dati sono formattati in un certo modo, vedi avanti...) che mi comprendano ciascuno i seguenti dati, escludendo però i doppioni della sola tabella PERSONE...
persone.IDpersona
persone.nome
persone.cognome
persone.eta
persone.città
persone.altezza
persone.occhi
persone.capelli
foto.filename_p
foto.filename_g
foto.IDpersona
In sintesi, ogni persona può avere più foto, ma a me interessa tirarne fuori solo una.
Avevo provato in origine ad applicare la seguente query SQL:
Ma come risultato ottengo la stessa persona moltiplicata tante volte quante sono le foto ad ella associate tramite l'IDpersona.codice:SELECT * FROM persone INNER JOIN foto ON persone.IDpersona = foto.IDpersona ORDER BY cognome
vorrei fare in modo che la persona mi venga tirata fuori solo una volta e con una sola foto associata.
ho provato sia col DISTINCT che col GROUP BY ma ottengo errori su errori, certamente per motivi di sintassi errata...
Successivamente ho provato ad applicare la seguente query SQL:
ma ottengo purtroppo il seguente messaggio d'errore:codice:sql = "SELECT *,(SELECT TOP 1 foto.IDpersona, foto.filename_p, foto.filename_g FROM foto WHERE foto.IDpersona=persone.IDpersona) FROM persone ORDER BY cognome"
Che succede?codice:Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][Driver ODBC Microsoft Access] È stata scritta una sottoquery che può restituire più campi senza utilizzare la parola riservata EXISTS nella proposizione FROM della query principale. Modificare l'istruzione SELECT nella sottoquery per richiedere soltanto un campo.
Preciso che i records estratti devono essere presentati (scritti, visualizzati a monitor) tramite un response.write nel modo seguente:
Grazie a voi e quanti vorranno aiutarmi!codice:<% i = 1 Do While NOT rs.EOF response.Write("&IDpersona" & i & "=" & rs("IDpersona") & "&nomecognome" & i & "=" & rs("nome") & " " & rs("cognome") & "&eta" & i & "=" & rs("eta") & "&dove" & i & "=" & rs("dove") & "&altezza" & i & "=" & left(rs("altezza"),1) & "," & right(rs("altezza"),2) & "&capelli" & i & "=" & rs("capelli") & "&fotopiccola" & i & "=" & rs("filename_p") & "&fotogrande" & i & "=" & rs("filename_g")) rs.MoveNext i = i+1 Loop response.Write("&contatore=" & i-1) %>
tizz


Rispondi quotando