2012-06-18 42 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; 
    }