我需要在Wordpress安装中执行以下MySQL查询:
我正在尝试使用带有别名的子查询来解决这个问题,但我无法使其工作,也不确定这是最好的方法。这是我目前的看法:
SELECT * FROM
(
SELECT term_id AS oppskrifter_id
FROM wp_terms WHERE name = "Oppskrifter"
) AS R1,
(
SELECT * FROM wp_terms AS t
INNER JOIN wp_term_taxonomy AS tt
ON tt.term_id = t.term_id
WHERE tt.taxonomy = "category" AND tt.parent IN (R1)
) AS R2;
第一个子查询本身就可以正常工作,但是当引入第二个子查询时,它不知道R1
是什么,因此我得到了错误ERROR 1054 (42S22): Unknown column 'R1' in 'having clause'
。如果我将R1
替换为实际查询SELECT term_id AS oppskrifter_id FROM wp_terms WHERE name = "Oppskrifter"
,则会收到错误消息ERROR 1060 (42S21): Duplicate column name 'term_id'
。
我在这里想要做的是在第二个查询中获取孩子(子弹点2),然后使用这些结果为孙子们做同样的事情。
我有什么选择来解决这个问题?有哪些正确的方法,包括速度和可读性?
答案 0 :(得分:1)
在所有3个表格上使用Join
。
注意:将wp_grand_child
替换为实际的表名,将wg.term_id
替换为实际的字段名
SELECT wt.term_id AS oppskrifter_id, wtt.term_id AS child_id, wg.term_id AS grand_child_id
FROM wp_terms AS wt
JOIN wp_term_taxonomy AS wtt ON wtt.term_id = wt.term_id
JOIN wp_grand_child AS wg ON wg.term_id = wtt.term_id
WHERE wt.name = "Oppskrifter"
AND wtt.taxonomy = "category"