Visualizzazione dei risultati da 1 a 9 su 9

Discussione: alias con join

  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    alias con join

    avrei bisogno di un piccolo aiuto..

    ho uan tabella

    tab
    codice:
    idtab - iduser1 - iduser2
    a questa tabella vorrei collegare gli ID degli utenti al loro nome

    user
    codice:
    iduser - nome
    ecco la query

    Codice PHP:
    $query= ("SELECT * FROM user JOIN tab ON user.iduser = tab.iduser1"); 
    scritta così basta che faccio

    Codice PHP:
    while ($rowmysql_fetch_array($query)) {

    echo 
    $row['nome'] . "
    "
    ;


    ma se volessi collegare sia user1 che user2 come posso fare??

    la query come potrei scriverla?? grazie

  2. #2

  3. #3
    Originariamente inviato da torrone
    qualche aiuto?
    Se vuoi semplicemente associarare l'id allo user ripeti la query in una UNION

    codice:
    $query= ("SELECT * FROM user 
                  JOIN tab ON user.iduser = tab.iduser1
                  UNION
                  SELECT * FROM user 
                  JOIN tab ON user.iduser = tab.iduser2 
                  ");

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da piero.mac
    Se vuoi semplicemente associarare l'id allo user ripeti la query in una UNION

    codice:
    $query= ("SELECT * FROM user 
                  JOIN tab ON user.iduser = tab.iduser1
                  UNION
                  SELECT * FROM user 
                  JOIN tab ON user.iduser = tab.iduser2 
                  ");
    ho fatto come dici tu, il problema è che sto stampando un elenco di tabelle e ad ogni tabella è associato user 1 e user2 e così non funziona.

    devo stamparela lista presente nella tabella

    tab.user1 --> tab.user2

  5. #5
    fai un'altra join

    Codice PHP:
    $query= ("SELECT * FROM user 
                  inner JOIN tab as a ON user.iduser = tab.iduser1
                  inner JOIN tab as b ON user.iduser = tab.iduser2 
                  "
    ); 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da piero.mac
    fai un'altra join

    Codice PHP:
    $query= ("SELECT * FROM user 
                  inner JOIN tab as a ON user.iduser = tab.iduser1
                  inner JOIN tab as b ON user.iduser = tab.iduser2 
                  "
    ); 
    ok però vorrei poi stampare il nome di ogni user come faccio? devo assegnare due alias, ma come?

  7. #7
    Originariamente inviato da torrone
    ok però vorrei poi stampare il nome di ogni user come faccio? devo assegnare due alias, ma come?
    non ho mica capito come hai fatto la tabella.

    Se hai idtab - iduser1 - iduser2 significa che hai due campi iduser per record e quindi i nomi sono gia' diversificati.

    Per assegnare gli alias devi solo elencare i campi:

    select idtab, a.iduser1 as user1, b.iduser2 as user2 ect... from ...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    scusami provo a spiegarmi meglio..

    ho due tabelle "user" e "tab"

    codice:
    user
    
    iduser - nome
    
    1 - andrea
    2 - matteo
    3 - marco
    4 - luca
    
    
    tab
    
    idtab - iduser1 - iduser2
    
    1 - 1 - 2
    1 - 3 - 4
    vorrei arrivare a questo risultato

    codice:
    andrea --> matteo
    marco --> luca
    quindi devo creare una query che mi associci a user1 e user 2 della tabella "tab" il nome dei determinati utenti presenti nella tabella "user"

    ho provato a scrivere questa query però non so come stampare il secondo nome dell'user2

    Codice PHP:
    $sql3as "SELECT *, user.nome as n1 FROM tab JOIN user ON tab.iduser1 = user.iduser";
    $query3as mysql_query($sql3as);
    while (
    $row3as mysql_fetch_array($query3as)) {

        echo 
    $row3as['n1'] . " --> " $row3as['idLanguage2'] . "
    "
    ;


    mentre se provo a far come dici tu però mi da come errore

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ...

    Codice PHP:
    $sql3as "SELECT *, user.nome as n1 FROM user INNER JOIN tab AS a ON tab.iduser1 = user.iduser JOIN user AS b ON tab.iduser2 = user.iduser";
    $query3as mysql_query($sql3as);
    while (
    $row3as mysql_fetch_array($query3as)) {

        echo 
    $row3as['n1'] . " --> " $row3as['idLanguage2'] . "
    "
    ;



  9. #9
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    c'è l'ho fatta

    Codice PHP:

    $sql3as 
    "SELECT *, la.user as l1, lb.user as l2 FROM tab JOIN user AS la ON la.iduser = tab.iduser1 JOIN user AS lb ON lb.iduser = tab.iduser2";
    $query3as mysql_query($sql3as);
    while (
    $row3as mysql_fetch_array($query3as)) {

        echo 
    $row3as['l1'] . " --> " $row3as['l2'] . "
    "
    ;


    grazie milleee

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 © 2024 vBulletin Solutions, Inc. All rights reserved.