$sql1 = "SELECT * FROM products P, ". //don't use star, make sure no fields are overwritten
INNER JOIN products_to_features PTF on P.id = PTF.project_id
INNER JOIN features F F.id = PTF.feature_id
ORDER BY P.id";
$r = mysql_query($sql1, $conn);
$arr = array();
$lastProductId = -1;
while ($row = mysql_fetch_assoc($r))
{
if ($row[p_id] != $lastProductId)
{
$lastProductId = $row['p_id'];
$arr['p_id'] = array('productName' => $row['p_name'],
'productPrice' = $row['p_price'],
'productFeatures' = array(),
//other fields from product table);
}
$arr['p_id']['productFeatures']['f_id'] = array('featureName' => $row['f_name'], blah...);
}
我不明白你的領域,你可能想加入feature_values,這樣會有更多的工作。你可以做不同的鍵/值(例如 - 產品名稱作爲關鍵字,特徵名稱作爲鍵值,無論你想要什麼值都是特性值),但重點是在一個查詢中這是可行的(並推薦)。
您應該在您的架構上發佈更多內容。你的桌子是如何組織的? – 2010-11-22 04:08:56
是的,請用您的模式更新您的問題。一個連接可能實際上是有用的,這取決於數據的組織方式,以及你想要從數據中獲得什麼。 – 2010-11-22 04:18:42