求助:感谢大家的快速回答
我有3个表,我加入了它们(在SQL中检查,值是正确的)但问题是其中2个具有相同的字段“denumire”具有不同的值,我需要回显它们
为了更清楚,这段代码回显相同的值,但在mysql中ID是正确的:
echo "<td valign='top'>" . nl2br( $row1[`specializare`.'denumire']) . "</td>";
echo "<td valign='top'>" . nl2br( $row1[`disciplina`.'denumire']) . "</td>";
mysql表结构:
specializare->ID_specializare, denumire
disciplina->ID_disciplina,denumire
preda->ID_specializare, ID_disciplina, etc
php中的sql_query:
$sql1 = mysql_query("SELECT preda.ID_material, prof.ID_prof, prof.nume, prof.prenume, `specializare`.denumire, disciplina.denumire, preda.an_studiu, preda.semestru, preda.material
FROM `prof`
LEFT JOIN `preda` ON `prof`.ID_prof = `preda`.ID_prof
LEFT JOIN `specializare` ON `specializare`.ID_specializare= `preda`.ID_specializare
LEFT JOIN `disciplina` ON `disciplina`.ID_disciplina = `preda`.ID_disciplina
WHERE '".$_SESSION['ID_prof']."'=prof.ID_prof
ORDER BY specializare.denumire;");
答案 0 :(得分:5)
运行SQL查询时,应使用别名列名称。
e.g。
SELECT t1.id as t1_id , t2.id as t2_id FROM table1 t1 , table2 t2 WHERE t2.id = t1.table_id_match
答案 1 :(得分:1)
在查询中使用别名
SELECT specializare.denumire as val1, disciplina.denumire as val2 etc .....
然后做
echo "<td valign='top'>" . nl2br( $row1['val1'])
答案 2 :(得分:0)
您应该在表和列上使用别名,如下所示:
select
a.someColumnName as aCol,
b.someColumnName as bCol
from
table1 a
join table2 b
on a.tableID=b.tableID
并使用a / b(或您在表上设置的任何别名)来确定在您将其引入(通过使用as aCol
)查询时哪些列以及如何引用它们。
答案 3 :(得分:0)
选择列时,可以使用别名:
SELECT denumire AS specDenumire FROM specializare
答案 4 :(得分:0)
是的,我们需要了解发生的事情。
在mysql中,
您可能已经通过tablename.columnname克服了冲突,但mysql给出的结果将是:
denumire | denumire而不是specializare
。'denumire'| disciplina
'denumire'
因此,在使用mysql_fetch_assoc()时,whem php存储导致数组。因为,关键是它们被覆盖,即 $ arr ['denumire'] = 1 // {{}}} .'denumire'将被覆盖 $ arr ['denumire'] = 2 // {{}}} .'denumire'。 因此,您可以通过别名来解决