我有一个非常简单的查询,但我需要在它里面做另一个查询。我对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