PHP -查询内部查询


PHP - Query inside query

我有一个非常简单的查询,但我需要在它里面做另一个查询。我对SQL和PHP知之甚少,所以我想请求您的帮助。

$result = mysql_query("SELECT * FROM img");
while ($row = mysql_fetch_assoc($result))
{
   $imgName = $row['name'];
   $catID = $row['catid'];
   // Problem
   // Need to get category NAME from category ID
   $result2 = mysql_query("SELECT name FROM cat WHERE id = $catID");
   while ($row2 = mysql_fetch_assoc($result2))
   {
      $catName = $row2['name'];
   }
   echo "Image: $imgName <br />";
   echo "Category: $catName";
}

这看起来是一个简单的获取类别名称的JOIN。您可以使用一个查询:

SELECT
  img.id AS imgId,
  img.name AS imgName,
  cat.name AS catName
FROM img JOIN cat ON img.catid = cat.id

将您的初始查询替换为上面的查询,它将消除对内部查询的需要。

你可以对这个做一个简单的子查询:

$result = mysql_query("
SELECT name, catid, (SELECT name FROM cat WHERE id = img.catid) AS cat_name
FROM img
");

应该可以。您将在每行中看到每个表的所有img属性以及cat.name值。

SELECT *, cat.name as catname FROM img
INNER JOIN cat
ON cat.id = img.catid