這實際上是一個多到一的關係,如您有關於多劑量的單一藥物:http://net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-relationships/
至於你的問題,這取決於你想如何使用上下文數據。如果劑量是用作藥房提供的各種產品(即一小瓶曲馬多和一個大瓶子)的參考,那麼我可能會爲每個劑量添加一個新的行,因爲你可能會首先有一組有限的價值可供選擇,它更能代表商店的庫存情況。然後,您可以遍歷它與嵌套循環是這樣的:
$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 display multiple rows grouped by common fields
在另一方面,如果它是用來跟蹤處方,然後沿的id | drug_id | dosage_amount
行一個單獨的表,沿與您需要的任何其他信息。
如果使用第二個選項去了,你可以使用一個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]}"
}
嗨喬爾,你覺得你可以詳細說一下第一個選項?每種藥物每個只有3-4個尺寸,但尺寸的數量各不相同。例如,許多隻有1個尺寸。我怎樣才能在網頁上回復每個藥物的名稱,並在每個名稱下回顯所有的大小? 我需要在我的數據庫查詢中實現兩個循環,一個用來回顯所有藥物,另一個用來回顯每種藥物的大小? – Starkers 2013-03-02 01:34:16
我編輯了一個格式化版本的答案:) – 2013-03-02 03:03:34
非常感謝謝謝! – Starkers 2013-03-03 17:29:24