Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Query su più tabelle

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25

    Query su più tabelle

    Sono un neofita di SQL e mi trovo davanti ad un problema che a me pare insormontabile.... mi spiego...
    Ho un DB composto da 2 tabelle :
    ALBUM:
    aid ---> id numerico dell'album
    aname--> Nome dell'album
    apos ---> posizione dell'ablum

    PHOTO:
    pid ---> id numerico della foto
    pcomm -----> commento alal foto
    ppath---> path della foto
    pthumb -----> path del thmbnail delal foto
    ppos ------> posizione della foto nell'album
    Paid -----> riferimento all'album che contiene la foto

    I campi apos e ppos sservono per dare l'ordine di posizionamento delle foto, in questa maniera l'utente cambiando questi valori può visualizzare prima un'immagine di un'altra e fino a qui tutto ok.
    Ogni album ha come immaginedurante la visualizzazione la foto n° 1 (ppos = 1) a lui associata.

    Volendo mostrare tutti gli album con relativa immagine mi trovo a dover realizzare una query che estragga tutti i dati da album ed in più mi associ ad ogni album la foto al lui collegata nella tabella PHOTO dove ppos è uguale ad 1, ma nonnostante i molteplici tentativi non sono riuscito a farlo.
    Ho letto qualcosa in merito all'istruzione JOIN ma non ci ho capito molto... potete aiutarmi in qualche modo ?!?!
    THX
    - Kiko -

  2. #2
    Volendo mostrare tutti gli album con relativa immagine mi trovo a dover realizzare una query che estragga tutti i dati da album ed in più mi associ ad ogni album la foto al lui collegata nella tabella PHOTO dove ppos è uguale ad 1, ma nonnostante i molteplici tentativi non sono riuscito a farlo.


    Prova con:

    SELECT A.*
    FROM ALBUM A INNER JOIN PHOTO B ON A.aid=B.Paid
    WHERE B.ppos=1

    Questa query ti estrai i dati di tutti gli album, che hanno una foto associata in posizione 1


    Spero di aver capito bene

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    Ciao grazie mille per la risposta... già così va benissimo, però mi viene un'altra domanda...
    Siccome io ho degli album che hanno la foto in posizione 1 ed altri che non la hanno proprio (e dove quinid metterò una di default) posso estrarre tutti gli album indistintamente ed associare a quelli che ce l'hanno la foto in posizione 1 mentre agli altri niente ??
    Grazie ancora del tuo aiuto, già così mi sono sbloccato parecchio
    - Kiko™ -

  4. #4
    Nn ho ben capito cosa vuoi dire. Potresti spiegarti meglio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    si si certo scusami
    diciamo che io ho 4 album, di cui 3 hanno una foto uploadata in posizione 1 e l'altro no
    allora quella query estrae tutti i dati degli album che hanno una foto in posizione n° 1, come posso fare se voglio estrarre tutti e 4 gli album e associare la foto ai primi tre ?
    grazie ancora
    - Kiko™ -

  6. #6
    Quindi, vuoi comunque estrarre tutti gli album che hanno la foto in posizione 1, mentre degli altri album che cosa vuoi estrarre?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    volgio estrarre tutti gli album indistintamente se hanno o meno la foto in posizione 1 in modo che poi facendo un controllo posso visualizzare la foto per quelli che ce l'hanno ed un immagine di default per quelli cohe nno ce l'hanno.
    Comunque sia estrarre tutti gli album dal DB
    grazie per la tua pazienza
    - Kiko -

  8. #8
    $sql_album = "SELECT * FROM ALBUM";

    $prendi_album = @mysql_query($sql_album, $connessione)
    or die("Impossibile prelevare i dati degli album dal DB");

    while ($riga_album = @mysql_fetch_assoc($prendi_album))
    {
    //Prendiamo tutti i dati dell'album
    $id_album = $riga_album['aid'];
    $nome_album = stripslashes($riga_album['aname']);
    $posizione_album = $riga_album['apos'];

    //A questo punto vedi se per quell'album esiste una foto in posizione 1

    $sql_foto = "SELECT * FROM PHOTO WHERE (Paid=$id_album AND ppos=1)";
    $prendi_foto = @mysql_query($sql_foto, $connessione)
    or die("Impossibile prelevare la foto dell'album");

    if ($riga_foto = @mysql_fetch_assoc($prendi_foto))
    {
    //Vuol dire che l'album ha una foto in posizione 1

    //A questo punto puoi prendere tutti i dati della foto
    $id_foto = $riga_foto['pid'];
    ..........
    }
    else
    {
    //Se si è qui vuol dire che l'album non ha una foto in posizione 1, quindi prendi quella
    //di default
    }
    }


    Penso fosse questo che intendevi.
    Ciao.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    25
    Grandissimo !!
    Non so davvero come ringraziarti !!
    - Kiko -

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.