このクエリがあります
$query = "SELECT * FROM items WHERE itemStatus = '1' AND itemAdded > '$timestamp'";
このクエリが結果を返したら、結果をループします
結果の配列は、itemID、itemLocationID、categoryParentID、categoryID、itemName、itemDetails です。
ループ中に、同じクラス内で関数を呼び出して、他の 3 つのクエリを実行します。
$locationName = $this->getLocationByName($locationID);
$categoryParentName = $this->getCategoryByName($categoryParentID);
$categoryName = $this->getCategoryByName($categoryID);
関数 getLocationByName がこのクエリを実行します。
$q = mysql_query("SELECT * FROM locations WHERE locationID = '$locationID'");
これは、locationID、locationName、locationLink の配列を返します
関数 getCategoryByName がこのクエリを実行します。
$q = mysql_query("SELECT * FROM categories WHERE categoryID = '$categoryID'");
これは、categoryID、categoryName、categoryLink の配列を返します
誰かがこのクエリを最適化するのを手伝ってくれませんか。おそらくそれらに参加して、非常に多くのクエリを実行するのを節約してください。
前もって感謝します。
私は今このクエリを使用しています
$q = mysql_query("SELECT
i.itemID,
i.locationID,
i.categoryParentID,
i.categoryID,
i.itemName,
i.itemDetails,
l.*,
c.*
FROM items i 内部結合位置 l on i.locationID = l.locationID 内部結合カテゴリ c on i.categoryID = c.categoryID WHERE itemStatus = '1' AND itemAdded > '$timestamp'")or die(mysql_error());
結果は
Array
( [itemID] => 81300 [locationID] => 17 [categoryParentID] => 21 [categoryID] => 183 [itemName] => 何とか [itemDetails] => 何とか [locationName] => 予想通りの場所に見事に引き込まれます. [locationLink] => blah [categoryName] => すばらしい、期待どおりにカテゴリを取得します。[categoryLink] => blah )
[categoryName] => //these are missing for categoryParentID
[categoryLink] => //these are missing for categoryParentID