2012-06-18 4 views
1

У меня есть запрос, соединяющие две таблицыОтображение уникальных имен столбцов с несколькими значениями

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 ($arr as $key) { 
    print "Prescription: " . $key 
    foreach($key as $value) { 
     print_r$value; 
    } 
Смежные вопросы