Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Aiuto su tipo di join

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393

    Aiuto su tipo di join

    Ho due tabelle.
    Una con i membri dello staff.
    Una con dei voti su dei film dati sempre dai membri dello staff. Però in questo seconda tabella su uno specifico film non sempre sono presenti i voti di tutti i membri.
    Io vorrei creare un ciclo while che tira fuori i nomi e i voti sullo specifico film, anche per chi non l'ha votato (cioè vorrei comparisse un NULL al posto del voto di chi non l'ha espresso, o qualcosa del genere).
    Avevo pensato a una cosa tipo:
    codice:
    $query_vot=    'SELECT a.signature, b.vote
    				FROM  cds_staff as a LEFT JOIN cds_film_vote as b ON a.idaut=b.idaut
    				WHERE idfilm = '.$id.'';			
    $result_vot  = mysql_query($query_vot , $db);
    [/CODE]
    while ( $row_vot = mysql_fetch_array($result_vot) ) {
    echo '
    <tr>
    <td width="50%" align="right" class="details">'.$row_vot['signature'].'</td>
    <td width="8">[img]../images/common/spacer.gif[/img]</td>
    <td width="50%">[img]../images/common/vote'.$row_vot['vote'].'.gif[/img]</td>
    </tr>
    '
    ;}[/CODE]

    Così facendo però mi tira fuori solo i nomi di chi ha espresso il proprio voto nella seconda abella...come potrei fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Adesso che ci penso dovrei usare il LEFT OUTER JOIN, ma se nella query metto
    codice:
    WHERE idfilm = '.$id.'';
    non possono comparire autori che non hanno espresso il voto?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    393
    Dunque:
    ho provato con
    codice:
    $query_vot=    'SELECT a.idaut, a.signature, b.vote
    				FROM  cds_staff as a LEFT OUTER JOIN cds_film_vote as b ON a.idaut = b.idaut';
    e mi restituisce anche quelli che non hanno votato, ma così non c'è la clausola che specifica l'id del film

    se metto:
    codice:
    WHERE b.idfilm='.$id.''
    ovviamente mi scompaiono quelli che non hanno votato il film nella seconda tabella

    avevo pensato di mettere
    codice:
    WHERE a.idaut <> b.idaut OR b.idfilm='.$id.''
    Ma mi dà errore. Qualcuno mi saprebbe aiutare?
    Ora tanto vado a fare questo mitico cenone di natale, ma in nottata mi ricollego, che credete!

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Premesso che LEFT JOIN e LEFT OUTER JOIN sono sinonimi, prova così, ma non sono sicuro che funzionerà:

    "SELECT a.idaut, a.signature, b.vote FROM cds_staff as a LEFT OUTER JOIN cds_film_vote as b ON (a.idaut = b.idaut AND b.idfilm = $id)"

  5. #5
    Utente di HTML.it L'avatar di dalang
    Registrato dal
    May 2003
    Messaggi
    252

    Buon Natale

    prova con INNER JOIN al posto di LEFT JOIN...


    Spero che non sia "delirium $_POST['Pranzo_di_Natale']; " :maLOL:

  6. #6

    proposta:

    codice:
    WHERE b.idfilm='.$id.' or b.idfilm IS NULL'
    buone feste
    "0 è tutto finito. 1 è solo l'inizio"
    HO IL CERTIFICATO DI RESISTENZA.

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.