Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    168

    Problema con query SQL (piuttosto urgente)

    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:

    codice:
    SELECT * FROM persone INNER JOIN foto ON persone.IDpersona = foto.IDpersona ORDER BY cognome
    Ma come risultato ottengo la stessa persona moltiplicata tante volte quante sono le foto ad ella associate tramite l'IDpersona.
    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:

    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"
    ma ottengo purtroppo il seguente messaggio d'errore:

    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.
    Che succede?

    Preciso che i records estratti devono essere presentati (scritti, visualizzati a monitor) tramite un response.write nel modo seguente:

    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) 
    %>
    Grazie a voi e quanti vorranno aiutarmi!

    tizz

  2. #2
    Ciao !

    hai provato anzichè utilizzare INNER JOIN utilizzare LEFT JOIN partendo con un select Distinct sulla tabella foto IDpersone

    Se tutte le persone hanno almeno una foto dovrebbe funzionare !!!

    Ciao Steweb

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.