2011-01-14 21 views
1

同じテーブルの結合し2でユニークなcolumnameを返す:SELECT *それクエリでMySQLは、私は次のクエリ持っ

(これは単なる例のために、ナンセンスクエリです) ...

SELECT * 
FROM scool 
LEFT JOIN people as t1 ON t1.scool_fk=scool.id AND t1.lang_gk='en' 
LEFT JOIN people as t2 ON t2.scool_fk=scool.id AND t2.lang_gk='fr' 

をフランス語を返します。 SELECT t1.*そのクエリで値

私はKN英語の値に

を返すのみ可能なソリューションOW私は私のプログラム

で選択を自動化することができないので、これは私を好きではない

SELECT t1.name as name_en, t2.name as name_fr 

であることは、GETのために、のTableName.ColumnNameまたは他の同様の溶液を用いてSELECTからすべての値を返すことが可能ですPHPの値は?

答えて

1

使用mysql_fetch_fieldとプロパティtablename

<?php 
     mysql_connect("", "", ""); 
     mysql_select_db("test"); 
     $res = mysql_query("SELECT * FROM t_ai a1 CROSS JOIN t_ai a2 LIMIT 1") or die(mysql_error()); 
     $names = array(); 
     for ($i = 0; $i < mysql_num_fields($res); $i++) { 
       $meta = mysql_fetch_field($res, $i); 
       array_push($names, "$meta->table.$meta->name"); 
     } 
     print implode($names, "\t") . "\n"; 
?> 

$ php phptest.php 
a1.id a2.id 
+0

クエリは二度同じテーブルに合流するため、実際には、ここでは助けにはなりません。 – troelskn

+0

@troelskn:クエリと出力を見てください。 – Quassnoi

+0

これで私は列名を持っていますが、どうすれば$ resの値を取得できますか? mysql_resultインデックス名を変更することは可能ですか? – David

関連する問題