2011-08-14 6 views
1

여기 꽤 기본적인 문제입니다. 기본적으로 나는 내부 조인을 사용하여 여러 테이블에서 데이터를 가져 오는 PHP/MySQL 코드가 있습니다. 그것은 다음과 같은 : 여러 테이블에서 가져 오는 mysql 쿼리에서 행의 테이블 이름 얻기

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_array($data)) { 
    echo $row[1]; 
} 

그래서 코드는 간단하다, 그러나 2 개 테이블 중 하나에있을 수 있기 때문에 제가하고 싶은 것은, 각 행은 그 동안 루프 내부에있는 테이블을 에코입니다.

트릭을 수행 할 mysql_field_table 및 mysql_tablename과 같은 일부 오래된 mysql 함수가 있지만 모든 함수가 사용되지 않는 것으로 보입니다.

이 작업을 수행하는 방법에 대한 조언을 주시면 감사하겠습니다.

감사합니다. -John

답변

0

모든 열의 이름을 바꾸려면 AS 키워드를 사용하십시오.

$select_clause = ''; 
$tables = array('tblA', 'tblB'); 
foreach($tables as $tbl) { 
    mysql_query('SHOW COLUMNS FROM ' . $tbl); 
    while ($row = mysql_fetch_assoc()) 
     $select_clause .= '`'.$tbl.'`.`'.$row['Field'].'` AS `'.$tbl 
      .'_'.$row['Field'].'`,'; 
} 
$select_clause = substr($select_clause, 0, -1); 
mysql_query('SELECT '.$select_clause.' FROM /*...*/ '); 
0

당신은 특별한 각 테이블에 대한 식별자 대신 사용 *

select table1.row1 as t1r1, table2.row1 as t2r1,..... from ..... 

로 데이터를 선택할 수와 PHP 안에 당신은 문자열 T1과 T2를 찾아 그에 따라 물건을 할 수 있습니다. 당신이 할 수있는 일

0

$row[3] 등 ...

희망 이제 테이블에서 모두 정보를 포함하여 결과 테이블 (더 이상 필드. 에코입니다

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_array($data)) 
{ 
    echo $row[1] . " " . $row[2]; 
}

... 그리고

또는 AS에서 제공하는 열 이름 또는 별칭으로 열 이름/필드에 액세스 할 수 있습니다.

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_assoc($data)) 
{ 
    echo $row["c_name1"] . " " . $row["c_name2"]; 
}

여기서 " c_name1"및 " c_name2"이 열 이름입니다.

관련 문제