Более простой способ сделать этот запрос SQL лучше - PullRequest
0 голосов
/ 08 июля 2011

У меня есть этот запрос 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';

Есть ли способ сделать это более элегантным?

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Ничего общего с 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
";
0 голосов
/ 08 июля 2011

Единственная разумная альтернатива, о которой я могу подумать - это коррелированный подзапрос, чтобы получить имя родителя ...

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...