簡體   English   中英

SQL查詢還是php代碼?

[英]SQL queries or php code?

你好,我在一個delima
假設我有一個類別的50個產品,我想獲得我的產品的所有功能......
當然SQL連接不會有幫助,因為加入會多次返回產品信息!

所以這就是問題......什么是更好的
計划A.
使用一個SQL查詢獲取所有產品的類別功能,然后使用php迭代每個功能並將其放入Product中。

計划B.
對於每個產品,通過調用查詢來獲取功能

接受其他解決方案

編輯

我的表架構大綱是......
表產品有產品信息(每行)
具有功能的表格功能(功能ID)
功能值的表格
還有一個包含產品及其功能和價值的表格

不是B計划

無論你做什么,這都可以而且應該用一個或最多兩個總查詢來完成(一個用於標題,一個用於正確排序的特征列表+ id列)。 該查詢是計划A還是某些未提及的計划C取決於您的確切表結構,這在您的問題中並不明確。

$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以便更多工作。 你可以做不同的鍵/值(即 - 產品名稱作為鍵。功能名稱作為鍵,功能值作為值,無論你想要什么),但重點是這在一個查詢中是可行的(並推薦)。

通常,您必須進行的數據庫查詢越少越好。 這在很大程度上取決於你的表結構,但我會選擇Plan A.

循環內的查詢將極大地降低應用程序的性能。 不惜一切代價避免它。

向我們展示架構。 單個SQL查詢很有可能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM