- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema con JOIN tra 2 tabelle
-
problema con JOIN tra 2 tabelle
ciao a tutti, ho 2 tabelle:
TABELLA
protocollo_attivita
CAMPO
referente_1
CAMPO
referente_2TABELLA
a_admin
CAMPO
id_admin
CAMPO
cognome_admine questa è la query:
[php]
<?
$query27="SELECT protocollo_attivita.*, a_admin.cognome_admin AS cognome
FROM protocollo_attivita, a_admin
WHERE protocollo_attivita.referente_1 = a_admin.id_admin
ORDER BY cognome DESC";
$ris_query27=mysql_query($query27, $conn);
while($row27=mysql_fetch_array($ris_query27)){?><?=$row27['cognome']?>
<?
$query28="SELECT protocollo_attivita.*, a_admin.cognome_admin AS cognome
FROM protocollo_attivita, a_admin
WHERE protocollo_attivita.referente_2 = a_admin.id_admin'";
$ris_query28=mysql_query($query28, $conn);
$row28=mysql_fetch_array($ris_query28);
?>
<?php
if ($row27['referente_2']>0)
{
?>
e <?=$row28['cognome']?>
<?php
}
else
{
echo '';
}
?>
[/php]i cognomi riferiti al campo referente_1 me li stampa correttamente invece dal campo referente_2 mi tira fuori sempre lo stesso cognome anche se controllando nel DB risulta un'altro cognome.
Dove sbaglio?
-
ciao,
io farei la tua query in questo modo:select protocollo_attivita.*, ref1.cognome_admin as cognome_ref1, ref2.cognome_admin as cognome_ref2 from protocollo_attivita inner join a_admin ref1 on protocollo_attivita.referente_1 = ref1.id_admin left join a_admin ref2 on protocollo_attivita.referente_2 = ref2.id_admin order by ref1.cognome_admin , ref2.cognome_admin
usando inner e left join riesci ad ottenere il risultato che vuoi facendo una sola query quindi risparmiando risorse sul server.
p.s. usare * è deprecabile perchè pur funzionando usa più risorse del server rispetto all'elenco degli effettivi campi che ti servono
p.s.s. quando in una query hai in ballo più di una tabella è consigliabile usare sempre la sintassi nome_tabella.nome_campo
p.s.s.s. la query l'ho scritta di getto sarebbe da provare
-
grazie Tymba