2

嘿,我的 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。

4

1 回答 1

0

如已编辑问题中所述;

解决方案是区分大小写和 where 而不是第 6 行中的 wheres。

于 2012-06-22T14:09:07.223 回答