mysql - 吐出与一对多表的 JOIN 匹配的所有层次结构数据

标签 mysql sql cakephp activerecord

基本上,我有一个分层树表

(按钮)

id INT(11),
name VARCHAR(80),
parent_id INT(11),
lft INT(11),
rght INT(11)

和另一个表的一对多关系

(kiosk_buttons)

id INT(11),
kiosk_id INT(11) "foreign key to kiosk table",
button_id INT(11) "foreign key to buttons table"

我一直在尝试忽略具有匹配的 buttons.id 和 kiosk_buttons.button_id 的行,同时也忽略匹配行的子项。

这是我目前的查询,它可以省略行但不能省略它的子项。

SELECT * 
FROM buttons as b
LEFT JOIN kiosk_buttons as kb
ON b.id = kb.button_id
WHERE kb.button_id is NULL

最佳答案

SQL 只是遍历和循环的错误概念,它是为集合而生的。因此,如果您有一种编程语言来处理数据,则必须以类似查询的形式将遍历放在那里,然后是

SELECT * 
FROM buttons as b
WHERE b.parent_id in (<last_button_list>)

同时显示任何结果。使用该数据并将新的 button_id 列表设置为 。

但如果它能让您感到安慰的话:这样可以更轻松地处理数据,因为包含整棵树的线性列表毫无用处。

关于mysql - 吐出与一对多表的 JOIN 匹配的所有层次结构数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205217/

相关文章:

MySQL WHERE 查询

php - Mysql join for thread及其回复

mysql - 如何使用 group by 'a' field by max of 'b' field 合并两个生成的表?

php - 内爆在不同的帖子中不起作用

sql - sql server中的列到行?

MYSQL关于合并的查询问题

cakephp - Paypal 结帐和批量支付与 cakephp 集成

sql - 对每一行应用标量函数

cakephp - 如何为 CakePHP 创建站点地图?

php - 将旧版 Ajax 脚本集成到 CakePHP 中