gpt4 book ai didi

sql - 将多个 MySql 查询组合成一个查询

转载 作者:行者123 更新时间:2023-11-29 04:13:35 26 4
gpt4 key购买 nike

我正在尝试解决第二天的问题,但还没有成功。

我的目标是:

对于某些分类术语 ID(例如 1),我需要获取至少一个属于该术语 ID (tid 1) 的节点的图像字段文件路径

以下三个查询可以满足我的需求。一切正常,但我知道它看起来真的很难看,而且我敢肯定,存在很大的性能问题。

$childterm = 10; // Taxonomy term ID
$result = db_fetch_array(db_query("SELECT node.vid FROM node JOIN
term_node ON node.vid=term_node.vid WHERE
term_node.tid=$childterm AND
node.type= 'product' LIMIT 0,1"));

$nvid = $result['vid']; // Extracting node VID by term ID that will be used futher

$result = db_fetch_array(db_query("SELECT field_image_cache_fid FROM
content_field_image_cache WHERE
vid = '%d'", $nvid));

$fid = $result['field_image_cache_fid']; // Extracting file ID from array

$result = db_fetch_array(db_query("SELECT filepath FROM files WHERE
files.fid = '%d'", $fid));

$filepath = $result['filepath']; // Finally. Extracting file path from array

请看图片。

alt text如何改进查询?我可以只使用一个 sql 查询来获取文件路径值吗?

提前致谢。

最佳答案

这样的事情应该可行。

$sql = "SELECT f.filepath FROM {node} AS n
INNER JOIN {term_node} AS t ON t.nid = n.nid
INNER JOIN {content_field_image_cache} as c ON c.nid = n.nid
INNER JOIN {files} AS f on f.fid = c.fid
WHERE n.type = '%s'
AND t.tid = %d;"

$result = db_query($sql, $node_type, $tid);

请注意,您应该使用

获取有关内容表名称的信息
$db_info = content_database_info(content_fields($field_name));

原因是如果您从/切换到多个值,SQL 将中断,除非您使用此方法来额外的表和列名。

关于sql - 将多个 MySql 查询组合成一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4070209/

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