2012-10-09 5 views
1

mysql에서 두 개의 테이블에 액세스하고 두 테이블의 필드를 사용하려고합니다. 두 테이블을 모두 일치 시키려면 innerjoin을 사용했지만 두 테이블 모두에서 필드를 가져 오는 방법을 궁금해하면 두 테이블 모두 동일한 필드 이름과 다른 값을 갖게됩니다. 여기MySQL에서 같은 이름의 여러 열 선택

$query1 = mysql_query("SELECT facilitator.FacID, facilitator.email, assigned.email FROM facilitator INNER JOIN assigned ON facilitator.FacID = assigned.FacID WHERE assigned.email = '$stuemail' AND facilitator.active = '1'") or die($query."<br/><br/>".mysql_error()); 
      while($line1=mysql_fetch_array($query1,MYSQL_ASSOC)){ 
       $faci= $line1['FacID']; 
       $facemail = $line1['email']; 
       $stumail2 = $line1['email']; 
.............code goes on.............. 

내가 이메일 필드 값 만 수행하는 방법을 궁금해 모두를 가져 싶어 ... 내 쿼리입니다. 나는 $ stumail2에 대해 쓴 것이 틀렸다는 것을 확신합니다. 도와주세요.

답변

0

:, 예컨대 그들을 명확하게하기 위해 열을 별칭을 사용할 수 있습니다.

첫 번째는 MySQL의에서 현장의 별명을 지정하는 것입니다 : 당신이 mysql_fetch_array()을 사용하고 있기 때문에

SELECT 
    facilitator.FacID, 
    facilitator.email AS facilitatorEmail, 
    assigned.email AS assignedEmail 
    .... 

두 번째는, 그 인덱스로 필드에 액세스 할 수 있습니다. facilitator.email 필드 인덱스 1을 가지고 있으며, 당신이 사용할 수 있도록 assigned.email는 인덱스 2 있습니다

$facemail = $line1[1]; 
$stumail2 = $line1[2]; 

또한, 기본적으로 MySQL의 각 중복 된 열 이름에 대한 증분 번호 (1에서 시작)를 추가해야합니다.

$facemail = $line1['email']; 
$stumail2 = $line1['email1']; 
0

당신은 당신은 몇 가지 옵션이

SELECT facilitator.FacID, 
    facilitator.email as FacilitatorEmail, 
    assigned.email as AssignedEmail 
FROM ... 
0

당신은 단지 쿼리의 키워드 '로'필요 :

$query1 = mysql_query("SELECT facilitator.FacID, facilitator.email as fac_email, assigned.email as assign_email FROM facilitator INNER JOIN assigned ON facilitator.FacID = assigned.FacID WHERE assigned.email = '$stuemail' AND facilitator.active = '1'") or die($query."<br/><br/>".mysql_error()); 
     while($line1=mysql_fetch_array($query1,MYSQL_ASSOC)){ 
      $faci= $line1['FacID']; 
      $facemail = $line1['fac_email']; 
      $stumail2 = $line1['assign_email']; 
그래서, 당신은 assigned.email 열을 액세스 할 수 email1을 사용할 수 있어야합니다
관련 문제