繁体   English   中英

使此 SQL 查询更好的更简单方法

[英]Easier way of making this SQL query nicer

我在这里有这个 MySQL 查询..

/***
 * An ugly self joining sql.
 * We want the parent's name so we have to join with the same table
 *    joining on child_row.parent_id = parent_row.id
 * Don't remove the LIMIT from this... it might be bad.
 */
$sql = 'SELECT cNode.*, pNode.name as parent_name ';
$sql.= ' FROM t_nodes AS cNode LEFT JOIN t_nodes AS pNode ';
$sql.= ' ON cNode.parent_id = pNode.id ';
$sql.='  WHERE cNode.id = '.$id.' LIMIT 1';

有没有办法让这更优雅?

与 SQL 无关,只是为了提高 PHP 源代码的易读性:

$sql = "
    SELECT cNode.*, pNode.name as parent_name
    FROM t_nodes AS cNode LEFT JOIN t_nodes AS pNode
    ON cNode.parent_id = pNode.id
    WHERE cNode.id = $id LIMIT 1
";

我能想到的唯一合理的选择是一个相关的子查询来获取父名称......

SELECT
  cNode.*,
  (SELECT name FROM t_nodes AS parent WHERE id = t_nodes.parent_id) AS parent_name
FROM
  t_nodes
WHERE
  cNode.id = $id
LIMIT 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM