select * from A left join B on A.columnc=B.columnd
結果は、AとBが同じ名前を持ついくつかの列を持っている場合は、両方のAとB複数の同じ名前の列を持つMySQL行の結果をPHPで取得するにはどうすればよいですか?
の列と何が含まれるSQLの上で返されますか?
PHPから値を取得する方法は?
select * from A left join B on A.columnc=B.columnd
結果は、AとBが同じ名前を持ついくつかの列を持っている場合は、両方のAとB複数の同じ名前の列を持つMySQL行の結果をPHPで取得するにはどうすればよいですか?
の列と何が含まれるSQLの上で返されますか?
PHPから値を取得する方法は?
selectステートメントにcolumn aliasesを使用する必要があります。
あなたの質問にもっと明白になりたいと思うかもしれません。あなたは、列のエイリアスを提供することができますその方法:
SELECT
A.foo as a_foo,
B.foo as b_foo
FROM A
LEFT JOIN B ON A.columnc = B.columnd
2番目のテーブルからいくつかのカラムだけが必要な場合は、 "mysqlの場合は、SELECT a。*、b.column_that_also_exist_in_a as someAliase ..."のようにすることができます。 – timdev
@tim:これを行う必要があります任意のANSI準拠データベースシステム –
答えはPHP documentationにactualyです:
「結果の2つの以上のカラムが同じフィールド名を持っている場合は、最後の列が優先されます。同じ名前の他のカラムにアクセスするには、次のいずれかがmysql_fetch_row()
を使用して、数値指標と結果にアクセスするか、エイリアス名を追加する必要があります。エイリアスのmysql_fetch_array()
説明で例を参照してください。」
Especialy mysql_fetch_array()
はそうあなたが最高の候補者になれるようにそして、あなたは$row[name]
によっておよび$row[col_number]
によって不明瞭1に曖昧でないフィールドを参照することができ
$row = mysql_fetch_array($result, MYSQL_BOTH)
、それは(多分のMySQLの次のバージョンがために起こっているあなたのコードの移植性を制限:SELECTステートメントでスターを使用して主張列を別の順序で返しますか?)。推奨される解決策は、クエリを書き換えて、starを使用するのではなく、あいまいなものを使用する代わりに、必要なフィールドをすべて一覧表示することです。
デモを提供できますか? – omg
ResultSetオブジェクトのJava + MySQLでは、クエリが "SELECT a.id、b。"のような場合は、getString( "a.id")やgetString( "b.id")などを使用できます。 id FROM a、b "
このようなことがPHPにある場合は、私は気にしません。
よろしく
これは誰かに有用である可能性がある:私はいくつかのテンプレートを使用していたので、私は簡単にするたびにエイリアスを使用することができなかった、と私は使いやすさのために連想配列を望んでいました。 クレジットhow to mysql_fetch_array on joined tables, but columns have same name上の彼の答えのために段落記号が、MySQLiをしては:
$qualified_names = array();
for ($i = 0; $i < mysqli_num_fields($result); ++$i) {
$fieldinfo=mysqli_fetch_field_direct($result,$i);
$table = $fieldinfo->table;
$field = $fieldinfo->name;
$qualified_names["$table.$field"]="$table.$field";
}
$newrow = array_combine($qualified_names, mysqli_fetch_array($result,MYSQLI_NUM));
あなたはあいまいな列を示すエラーを取得したい - データベースが同じ名前を持つ2つの列のどれを使用するように伝えることはできません。 –
@rexem:そうではありません。 SQLは絶対に正しいですが、クエリが両方のテーブルに存在するカラム名を明示的に選択していて、テーブル接頭辞を指定していない場合は、エラーが発生します。 – quosoo