0

已解决:感谢大家的快速解答

我有 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;"); 
4

5 回答 5

5

运行 SQL 查询时,应使用别名列名。

例如

SELECT t1.id as t1_id , t2.id as t2_id FROM table1 t1 , table2 t2 WHERE t2.id = t1.table_id_match
于 2012-09-10T12:56:28.753 回答
1

在查询中使用别名

SELECT specializare.denumire as val1, disciplina.denumire as val2 etc .....

然后做

echo "<td valign='top'>" . nl2br( $row1['val1']) 
于 2012-09-10T12:57:05.227 回答
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

于 2012-09-10T12:56:41.327 回答
0

选择列时,您可以使用别名:

SELECT denumire AS specDenumire FROM specializare
于 2012-09-10T12:56:53.770 回答
0

是的,在这里我们需要了解正在发生的 wts。

在 mysql 中,您可能已经通过 tablename.columnname 克服了冲突,但 mysql 给出的结果将是:denumire | denumire 而不是specializare.'denumire' | disciplina.'denumire'

因此,当使用 mysql_fetch_assoc() 时,php 将结果存储在数组中。因为,关键就像它们被覆盖了,即 $arr['denumire'] = 1 // specializare.'denumire' 将被 $arr['denumire'] = 2 // disciplina.'denumire' 覆盖。所以,因此你通过别名解决

于 2012-09-10T13:29:26.380 回答