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' の代わりにspecializaredenumire | disciplina.'デヌメア'

そのため、mysql_fetch_assoc() を使用しているときに、php ストアが配列になります。つまり、キーは上書きされるようなものです。つまり、$arr['denumire'] = 1 // specializare.'denumire' は $arr['denumire'] = 2 // disciplina.'denumire' で上書きされます。したがって、エイリアスで解決します

于 2012-09-10T13:29:26.380 に答える