2012-06-18 2 views
1

나는 쿼리에 합류표시 unqiue 열 이름

SELECT DISTINCT prescriptions.prescription, prescription_history.dosage 
FROM prescriptions 
LEFT OUTER JOIN prescription_history ON prescriptions.prescription=prescription_history.prescription 

지금 처방전 테이블이 두 필드 기본 키 및 처방 이름과 prescription_history 처방의 이름은 처방에 외래 키 4 개 필드가있다 두 개의 테이블이 있습니다. 좀 더 명확하게하기.

Prescriptions table: 
id prescription 
1 advair 
.. .... 

등 등

Prescription_History 
id prescription account_num dosage 
1 advair   989   20mcg 
2 advair   567   50mcg 
.. ...   ...   ... 

과에

.

Advair Symbicort 
20mcg 140/4.5 
50mcg 120/4.5 

하지만, 대신에 내가 처방 이름을 점점 오전에 두 번 : 내가 출력 인 경우

이것은 내가 한 번 투약 다음에 처방 이름을보고 싶습니다 체크 박스를 만들 수 있습니다 이어서 복용량.

Advair Advair Symbicort Symbicort 
20mcg 50mcg 140/4.5  120/4.5 

그래서 내가 한번 그 처방에 대한 모든 복용량 다음에 처방 이름을 표시 할 수있을 것입니다 방법

. 나는 array_unique를 사용하여 시도하지만이 용량 만 출력 하나 개의 처방전 이름 다음에하고 그들이없는 경우에도 다른 모든 처방 이름을 무시 같은

+0

와? 그래서 당신은 다른 행마다 각 열을 표시하고 싶습니까? – jcho360

+0

예. 처방전 이름을 한 번만 표시하고 그 처방전의 모든 처방전을 –

답변

0

당신이하고 싶은 소리는 두 테이블을 연결 한 다음, 반복하여 처방전의 고유 한 인스턴스를 찾아내어 각 처방을 찾습니다. 당신이 할 수있는 한 가지 방법은 처방전을 고유 한 키로 배열 한 다음 각 처방에 해당하는 복용량/처방전 기록을 배열하는 것입니다. 당신이 (안된) 같은 것을 할 수 있도록 : 그 후

$sql = "SELECT DISTINCT prescriptions.prescription, prescription_history.dosage, prescription_history.account_num FROM prescriptions LEFT OUTER JOIN prescription_history ON rescriptions.prescription=prescription_history.prescription" 
$result = mysql_query($sql) or die("MySQL-Error: " . mysql_error()); 
$arr = array(); 
while ($new = mysql_fetch_row($result)) { 
     if (array_key_exists($new[0], $arr)) { 
      array_push($arr[$new[0]], array($new[1], $new[2])); 

     } else { 
      $arr[$new[0]] = array(); 
      array_push($arr[$new[0]], array($new[1], $new[2])); 
     } 
} 

을, 당신은 그것을 반복하는 foreach 루프를 사용할 수 있습니다 등등

foreach ($arr as $key) { 
    print "Prescription: " . $key 
    foreach($key as $value) { 
     print_r$value; 
    }