2016-05-30 4 views
0

このコードを実行するたびに、カラムが同じであるため、test2の値だけが取得されます。PHP Mysqli fetch_assoc()joinクエリのfetch_assoc()

$Return = array(); 
$Output = $MySQLi->query("SELECT * FROM test1 as A LEFT JOIN test2 as B ON A.abc=B.abc"); 
while($Row = $Output->fetch_assoc()) { 
    $Return[] = $Row; 
} 
var_dump($Return); 

これは私が得るものです。

array(1) { [0]=> array(2) { ["abc"]=> string(1) "2" [123]=> string(1) "3" } } 

fetch_assoc()にこのような結果を返す方法はありますか?

array(1) { [0]=> array(2) { ["A.abc"]=> string(1) "7" [A.123]=> string(1) "8" ["B.abc"]=> string(1) "2" [B.123]=> string(1) "3" } } 
+0

test1とtest2の各列のエイリアスを作成する必要があります。 – Saty

+0

@Satyこれを避ける方法はありますか?私が実際に使っているテーブルは小さくないので、一度に4つになることもあります。 –

+1

"SELECT A。*、B * FROM test1を左ジョイントtest2としてBを使用するA.abc = B.abc" – RJParikh

答えて

0

あなたがデータを選択しながら、エイリアスを使用する必要があり、最良のではなく、以下のようなクエリを書く*

を使用するので必要とされる唯一の選択である: -

SELECT A.abc as 'A.abc',A.123 as 'A.123',B.abc as 'B.abc',B.123 as 'B.123' 
FROM test1 as A 
LEFT JOIN test2 as B 
ON A.abc=B.abc 

はそれに役立つことを願っていますあなた:-)

+0

カラム名を対応するテーブルエイリアスから始めることができますか?すべての列を定義せずに? –

+0

区別したい列名を定義する必要があります。また、 "A。*、B.abcを 'B.abc'、B.123を 'B.123'と書くこともできます。 FROM test1 A LEFT JOIN test2をB としてA.abc = B.abc" –

0

一般的に、この質問に対するエイリアスは、この特定の不都合(実際の問​​題の無限の数と一緒に)を解決するためにクエリにエイリアスを定義することですが、すべての同様のデータを1つのテーブルにまとめる必要があります。これが唯一の正しい方法です。

関連する問題