'$timestamp'"; 一旦此查询返回结果-6ren">
gpt4 book ai didi

mysql - 在 MySQL 查询中连接表而不是多个查询

转载 作者:行者123 更新时间:2023-11-29 08:37:03 25 4
gpt4 key购买 nike

我有这个查询

$query = "SELECT * FROM items WHERE itemStatus = '1' AND itemAdded > '$timestamp'";

一旦此查询返回结果,我就会循环遍历结果

结果数组为 itemID、itemLocationID、categoryParentID、categoryID、itemName、itemDetails

在循环期间,我通过调用同一类中的函数来运行其他三个查询

$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.*

来自 项目我 i.locationID = l.locationID 上的内连接位置 l i.categoryID = c.categoryID 上的内连接类别 c在哪里 项目状态 = '1' AND itemAdded > '$timestamp'")or die(mysql_error());

结果是

Array

( [商品ID] => 81300 [位置ID] => 17 [类别父 ID] => 21 [类别ID] => 183 [元素名称] => 废话 [项目详细信息] => 废话 [locationName] => 太棒了,它按预期拉入了位置。 [locationLink] => 废话 [categoryName] => 太棒了,它按预期拉入了类别。 [categoryLink] => 废话)

[categoryName] => //these are missing for categoryParentID
[categoryLink] => //these are missing for categoryParentID

最佳答案

我不会在 select 语句中使用 *带有连接的查询可能是

SELECT 
i.itemID,
i.itemLocationID,
i.categoryParentID,
i.categoryID,
i.itemName,
i.itemDetails,
l.*,
c.*
FROM
items i
inner join locations l on i.itemLocationID = l.locationID
inner join categories c on i.categoryID = c.categoryID
WHERE
itemStatus = '1'
AND itemAdded > '$timestamp'

希望对您有用。干杯!

关于mysql - 在 MySQL 查询中连接表而不是多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com