Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    elenco con nominativi ripetuti più volte

    ciao a tutti,
    ho un problema con un elenco, mi vengono ripetuti i nomi più volte, anzichè stamparmelo una volta sola.
    Come faccio a raggruppare le tabelle "a_admin" e "a_agenti"? Ho provato con UNION ma succede un casino perchè i nomi dei campi tra le due tabelle sono diversi.
    Questo è il codice:

    Codice PHP:
    <?
    $sql 
    =   " SELECT a_admin.*, a_agenti.*
        FROM a_admin, a_agenti
        ORDER BY a_admin.nome_admin ASC, a_agenti.nome_agente ASC"
    ;
    $result mysql_query($sql$conn) or die ("errore ".mysql_error());
    while(
    $row=mysql_fetch_array($result)){
    ?>  
    <tr>
        <td width="135" height="41"><span class="testo_rosso_bold">nome</span></td>
        <td width="140"><span class="testo_rosso_bold">cognome</span></td>
        <td width="100"></td>
        <td width="140"><span class="testo_rosso_bold">categoria</span></td>
        <td width="135"><span class="testo_rosso_bold">cellulare</span></td>
        </tr>
          <tr>
        <td height="1" colspan="5" valign="top" bgcolor="BE743F"></td>
        </tr>
    <?
        
    while($row=mysql_fetch_array($result)){
    ?>
    <tr>
        <td height="41">
    <span class="testo_grigio_bold">
    <?=$row['nome_admin']?>
    <?=$row
    ['nome_agente']?>
    </span>
    </td>
        <td>
    <span class="testo_grigio_bold">
    <?=$row['cognome_admin']?>
    <?=$row
    ['cognome_agente']?>
    </span>
        </td>
        <td></td>
        <td>
    <span class="testo_grigio_bold">
    <?=$row['categoria']?>
    </span>
        </td>
        <td>
    <span class="testo_grigio_bold">
    <?=$row['cellulare_admin']?>
    <?=$row
    ['cellulare_agente']?>
    </span>
        </td>
      </tr>
    <?
    }
    ?>

  2. #2
    Puoi utilizzare AS per effettuare l'aliasing dei campi di una delle due tabelle ed utilizzare UNION per ottenere il risultato corretto. Oppure puoi caricare i risultati delle due query in un unico array utilizzando i nomi come chiave per evitare duplicazioni.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Originariamente inviato da filippo.toso
    Puoi utilizzare AS per effettuare l'aliasing dei campi di una delle due tabelle ed utilizzare UNION per ottenere il risultato corretto. Oppure puoi caricare i risultati delle due query in un unico array utilizzando i nomi come chiave per evitare duplicazioni.

    sono andato a cercare su Google il significato di (AS per effettuare l'aliasing) trovando una spiegazione molto tecnica e se non ho capito male questa query dovrebbe andar bene:

    SELECT a_admin.*, a_agenti.*
    FROM (a_admin INNER JOIN a_agenti on a_admin.id_admin = a_agenti.id_agenti)
    INNER JOIN tabella_alias ON a_agenti.id_agenti = tabella_alias.id_tabella_alias

    Che ne dici?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    dopo decine e decine di tentativi finalmente sono riuscito a risolvere il problema facendo così:

    Codice PHP:
    <?
    $sql 
    "SELECT a_admin.nome_admin, a_admin.cognome_admin, a_admin.categoria, a_admin.cellulare_admin
            FROM a_admin
            WHERE a_admin.id_admin!=0 AND a_admin.id_admin!=1000
            UNION
            SELECT a_agenti.nome_agente, a_agenti.cognome_agente, a_agenti.categoria, a_agenti.cellulare_agente
            FROM a_agenti
            WHERE a_agenti.id_agenti!=0 AND a_agenti.id_agenti!=1000
            UNION
            SELECT a_tecniche.nome_tecnica, a_tecniche.cognome_tecnica, a_tecniche.categoria, a_tecniche.cellulare_tecnica
            FROM a_tecniche
            WHERE a_tecniche.id_tecniche!=0 AND a_tecniche.id_tecniche!=1000 AND a_tecniche.id_tecniche!=1100"
    ;

    $result mysql_query($sql$conn) or die ("errore ".mysql_error());
    ?>
    e funziona bene, però se poi aggiungo:

    Codice PHP:
    ORDER BY a_admin.nome_admin ASCa_agenti.nome_agente ASCa_tecniche.nome_tecnica ASC 
    mi da questo errore:
    errore Unknown column 'a_admin.nome_admin' in 'order clause'

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    up

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho modificato la query, ora l'errore di prima non me lo da più, ma me ne da un'altro!

    Codice PHP:
    <?
    $sql 
    "(SELECT a_admin.*
            FROM a_admin
            WHERE a_admin.id_admin!=0 AND a_admin.id_admin!=1000)
            UNION
            (SELECT a_agenti.*
            FROM a_agenti
            WHERE a_agenti.id_agenti!=0 AND a_agenti.id_agenti!=1000)
            UNION
            (SELECT a_tecniche.*
            FROM a_tecniche
            WHERE a_tecniche.id_tecniche!=0 AND a_tecniche.id_tecniche!=1000 AND a_tecniche.id_tecniche!=1100)
            ORDER BY a_admin.nome_admin DESC"
    ;

    $result mysql_query($sql$conn) or die ("errore ".mysql_error());
    ?>
    questo è l'errore:
    errore Table 'a_admin' from one of the SELECTs cannot be used in global ORDER clause

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ok a posto ci sono riuscito da solo

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.