2016-05-30 2 views
0

Всякий раз, когда я запускаю этот фрагмент кода, я получаю только значения от test2 из-за того, что столбцы являются одинаковыми.PHP Mysqli 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 как LEFT JOIN test2 как B ON 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

Вам нужно определить имена колонок, которые вы хотите отличить. Вы также можете написать «SELECT A. *, B.abc as« B.abc », B.123 как« B.123 » FROM test1 as A LEFT JOIN test2 as B ON A.abc = B.abc" –

0

Хотя в целом ответ на этот вопрос заключается в определении псевдонимов в вашем запросе, для решения этих конкретных неудобств (наряду с бесконечным количеством реальных проблем), вы должны сделать все подобные данные в одну таблицу. Это единственный правильный способ.

Смежные вопросы