嘿,我的 sql 语句有一些问题。这是数据库方案:( http://docs.elgg.org/wiki/DatabaseSchema),只有“实体”和“关系”表很重要!我要做的是,选择对象类型为“组”但该对象不是其他组的子对象的所有 guid。这意味着关系表中没有与 guid_two 列中的 guid 的记录。我的第一个想法是这样的:
SELECT * FROM elgg_entities e
JOIN elgg_entity_relationships r ON e.guid = r.guid_one
WHERE e.type='group' AND NOT EXISTS (
SELECT *
FROM elgg_entity_relationships s
WHERE e.guid = s.guid_two
AND s.relationship='subgroup')
但它不会工作。表中还有一些其他的关系,比如成员等。我希望有人能帮助我,因为我现在真的很沮丧。
编辑:此 SQL 查询在 MyPHP 中有效,在 elgg 中我尝试将其转换为“elgg-ich”:
$options = array(
'type' => 'group',
'joins' => array("JOIN elgg_entity_relationships r ON e.guid = r.guid_one"),
'wheres' => array("e.type='group' AND not exists (SELECT e.guid
FROM elgg_entity_relationships s
where e.guid = s.guid_two
AND s.relationship = 'subgroup'
)"),
'limit' => $limit,
'full_view' => FALSE,
);
$content = elgg_list_entities($options);
=> 解决方案是区分大小写和 where 而不是第 6 行中的 wheres。