与SQL语句斗争(不存在)

与SQL语句斗争(不存在),sql,elgg,not-exists,Sql,Elgg,Not Exists,嘿,我对sql语句有一些问题。这是数据库方案:,只有实体和关系表才重要!我试图做的是,选择所有guid,其中对象的类型为组,但此对象不是其他组的子对象。这意味着关系表中没有guid在guid\u两列中的记录。我的第一个想法是: SELECT * FROM elgg_entities e JOIN elgg_entity_relationships r ON e.guid = r.guid_one WHERE e.type='group' AND NOT EXISTS ( SELECT

嘿,我对sql语句有一些问题。这是数据库方案:,只有实体和关系表才重要!我试图做的是,选择所有guid,其中对象的类型为组,但此对象不是其他组的子对象。这意味着关系表中没有guid在guid\u两列中的记录。我的第一个想法是:

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);

=>解决方案是第6行中的区分大小写和where,而不是where

如编辑问题中所述

解决方案是区分大小写,在哪里而不是在哪里 六,


如经编辑的问题所述

解决方案是区分大小写,在哪里而不是在哪里 六,


您的查询看起来不错,也许您可以在上建立一个示例,使问题变得切实可行您是对的。我用php尝试了这个查询,得到了正确的guidd。看来问题出在埃尔格。谢谢请定义它不起作用。你收到错误信息了吗?如果是,请出示。你得到了意想不到的结果吗?如果是这样,请显示输入数据、结果以及为什么它们不是您期望的。不,我没有得到错误,并且在调试模式下我找不到任何东西。在我看来,elgg只是忽略WHERE部分。可能是区分大小写的WHERE而不是WHERE?您的查询看起来不错,也许您可以在上建立一个示例,使问题变得切实可行。您是对的。我用php尝试了这个查询,得到了正确的guidd。看来问题出在埃尔格。谢谢请定义它不起作用。你收到错误信息了吗?如果是,请出示。你得到了意想不到的结果吗?如果是这样,请显示输入数据、结果以及为什么它们不是您期望的。不,我没有得到错误,并且在调试模式下我找不到任何东西。看起来elgg只是忽略WHERE部分。可能是区分大小写的WHERE而不是WHERE?