PDA

Pogčedajte punu verziju : Razlikovanje vrijednosti kada se dva polja u tablici imaju isto ime unutat INNER JOIN


misko_
17. 03. 2008., 12:42
Cao,

Napravio sam u PHP-u upit tipa:
$rezultat = mysql_query("SELECT lokacije_s_kategorijama.id,
lokacije_s_kategorijama.id_lokacija,
lokacije_s_kategorijama.id_kategorija,
lokacije.naziv,
kategorije.naziv
FROM lokacije_s_kategorijama
INNER JOIN kategorije
ON kategorije.id=lokacije_s_kategorijama.id_kategorij a
INNER JOIN lokacije
ON lokacije.id=lokacije_s_kategorijama.id_lokacija;")
or die('Selektiranje nije uspijelo: ' . mysql_error());

Znaci ovdije kupi podatke iz tri tablice(lokacije, kategorije i lokacije_s_kategoijama). lokacije_s_kategorijama je tipicna tablica rezultata N:N veze.

poslje toga koristim kod:
$i=1;
while( $redak=mysql_fetch_array($rezultat) )
{
echo "<tr>";
echo "<td> $i </td>";
echo "<td>" . $redak['id'] . "</td>";
echo "<td>" . $redak['id_lokacija'] . "</td>";
echo "<td>" . $redak['id_kategorija'] . "</td>";
echo "<td>" . $redak['naziv'] . "</td>";
echo "<td>" . $redak['naziv'] . "</td>";

echo "<td><a onclick=\"return confirm('DA LI STE SIGURNI');\" href=promjeni_lokaciju_s_kategorijom.php?id=".$redak['lokacije_s_kategorijama.id'].">PROMJENI</a></td>";
echo "<td><a onclick=\"return confirm('DA LI STE SIGURNI');\" href=brisi_lokaciju_s_kategorijom.php?id=".$redak['lokacije_s_kategorijama.id'].">BRISI<a><td>";
echo "</tr>";
$i++;
}
$i = $i - 1;

E ono sto je meni ovdije zanimljivo je to da ako zelim pokupiti vrijednost polja id iz lokacije_s_kategorijama tablice ne mogu napisati $redak['lokacije_s_kategorijama.id'] nego moram $redak['id'] sto mi stvarno nije jasno zato? Ako netko zna bio bih mu zahvalan da mi objasni.

Pravi mi je problem sljedeci:
postoji polj sa imenom naziv i u lokacije i u kategorije tablici
posto ne mogu koristiti sintaxu $redak['<ime tablice>.<ime polja>']
znaci ne mogu koristiti
$redak['lokacije.naziv']
$redak['kategorije .naziv']
nego mogu samo koristiti:
$redak['naziv']

a kada to koristim onda dobijem vrijednost od kategorije.naziv(valjda zato sto je zadnji u upitu)

Ovo bih mogao rijesiti da preiminujem kategorije.naziv u kategorije.naziv_kategorije i lokacije.naziv i lokacije.naziv_lokacije,
ali me zanima da li postoji koje drugo(elegantnije rijesenje) ???

HVALA

ivanhoe
17. 03. 2008., 14:01
pogledaj kako se koristi AS u sql-u

misko_
17. 03. 2008., 14:19
pogledaj kako se koristi AS u sql-u


lokacije.naziv AS naziv_lokacije,
kategorije.naziv AS naziv_kategorije


echo "<td>" . $redak['naziv_lokacije'] . "</td>";
echo "<td>" . $redak['naziv_kategorije'] . "</td>";

sramotno koja i ja pitanja postavljam, nego da to jos neznam, nego sam sve pozaboravljao...:(