これは実際には多対1の関係です。これは、単一の薬剤に対して複数の投与量があるためです。http: //net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-関係/
あなたの問題に関しては、これはあなたがデータをどのように使用したいかという文脈に依存します。薬局で提供されるさまざまな製品(つまり、トラマドールの小瓶と大瓶)を参照するために投与量を使用する場合は、おそらく、投与量ごとに新しい行を追加するだけです。そもそも選択できる値のセットは限られており、店舗の在庫がどのようになるかをよりよく表しています。次に、次のようなネストされたループを使用して反復処理できます。
$drugs = array()
while ($row = mysql_fetch_array($result)) {
$drugs[$row['name']][] = $row['dosage_amount']
}
foreach ($drugs AS $drug => $dosages) {
echo '<h2>'. htmlentities($drug, ENT_COMPAT, 'UTF-8') .'</h2>';
foreach ($dosages AS $dosage) {
echo '<br><em>'. htmlentities($dosage, ENT_COMPAT, 'UTF-8') .'</em>';
}
}
参照:PHP MySQLは、共通フィールドでグループ化された複数の行を表示します
一方、処方箋の追跡に使用する場合id | drug_id | dosage_amount
は、必要なその他の情報とともに、の行に沿って別のテーブルを用意します。
2番目のオプションを使用した場合は、を使用しINNER JOIN
て必要なデータを取得します。
SELECT drugs.name, prescriptions.dosage_amount
FROM drugs
INNER JOIN prescriptions
ON drugs.id=prescriptions.drug_id
参照:http ://www.w3schools.com/sql/sql_join_inner.asp
そこから、すでに行っていたのと同じ方法で繰り返すことができます。
while ($row = mysql_fetch_array($result)) {
echo "Drug Name: {$row[0]} Drug Weight: {$row[1]}"
}