2011-12-25 5 views
2

두 테이블에서 SQL 쿼리를 만들었습니다. 모든 것이 잘 작동하지만 문제는이 두 테이블이 동일한 필드 이름을 가지고 있으며 올바른 표시 방법을 모르면 $ data [ 'aaa']가 테이블 1에 있고 동일한 $ data [ 'aaa두 테이블의 이름이 같은 열을 어떻게 표시 할 수 있습니까?

$query_str = "SELECT 
        cm.id, 
        cm.global_category_id, 
        cm.num, 
        cm.menu_lv, 
        cm.menu_ru, 
        cm.menu_en, 
        u.id, 
        u.menu_lv, 
        u.menu_ru, 
        u.menu_en 
        FROM products_category cm, products_global_category u 
        WHERE cm.global_category_id = u.id 
        "; 

및 디스플레이 데이터

<? foreach ($sub_category_list as $line) : ?> 
<tr> 
    <td><?=$line['menu_lv']?></td> <---- here I want to display data from products_global_category u  
    <td><?=$line['sub_menu_lv']?></td> <---- products_category cm 
    <td><?=$line['sub_menu_ru']?></td> <---- products_category cm 
    <td><?=$line['sub_menu_en']?></td> <---- products_category cm 
</tr> 
<? endforeach; ?> 

답변

7

당신이 가지고있는 필드에 별칭을 제공하기 위해 SQL 쿼리를 변경할 수있는 솔루션으로 '] 테이블에서이 여기

내 SQL 쿼리입니다 같은 이름. 예를 들어

:

SELECT somefield AS othername FROM table. 

이 경우는 somefield 필드는 별명 othername를 통해 사용할 수 있습니다. 귀하의 경우에는

:

$query_str = "SELECT 
       cm.id AS cm_id, 
       cm.global_category_id, 
       cm.num, 
       cm.menu_lv AS cm_menulv, 
       cm.menu_ru AS cm_menuru, 
       cm.menu_en AS cm.menuen, 
       u.id as u_id, 
       u.menu_lv AS u_menulv, 
       u.menu_ru AS u_menuru, 
       u.menu_en AS u_menuen 
       FROM products_category cm, products_global_category u 
       WHERE cm.global_category_id = u.id 
       "; 

다음 PHP의 :

$line['u_menulv'] //Access field menu_lv from products_global_category table 
$line['cm_menulv'] //Access field menu_lv from products_category table 

편집 :documentation pagemysql_fetch_array에서 :

경우, 결과의 두 개 이상의 열 동일한 필드 이름을 가지면 마지막 열이 ta가됩니다. 우선 순위. 같은 이름의 다른 열을 액세스하려면 열의 숫자 색인을 사용하거나 열의 별칭을 만들어야합니다. 별칭이 지정된 열의 경우 원래 열 이름을 사용하여 내용에 액세스 할 수 없습니다.

즉, 위와 같은 별칭을 만들거나 배열의 숫자 인덱스로 필드에 액세스하십시오.

+0

대단히 감사합니다! 내 문제에 도움이된다. – Viktors

1

간단히 예를 들어, 어떤 충돌 서로 인쇄하고자하는 기록 별칭 : 다음과 같이

SELECT 
    table1.pid AS page_id, 
    table2.pid AS product_id 
FROM 
    table1 
LEFT JOIN 
    table2 
ON 
    table1.id = table2.id 

다음 PHP 내에서 당신이 그들을 밖으로 에코 할 수 있습니다 :

while ($row = mysql_fetch_assoc($res)) { 
    echo $row['page_id']; 
    echo $row['product_id']; 
} 

희망을 이게 도움이됩니다!

관련 문제