【问题标题】:AddSelect In searchQueryBuilder use conditionAddSelect 在 searchQueryBuilder 使用条件
【发布时间】:2021-08-02 14:22:58
【问题描述】:

我必须得到我的客户,并且所有客户都有一个(客户组)例如:客户/卖家/客人/买家.... 并且任何客户都有一个默认组,并且我只想在他是买家时获得该客户的默认组,但是当他是卖家时,我想获得任何其他组(当他在这个组中时) 我应该在 mysql 部分做这个条件。这就是我所做的,但我遇到了一些问题

        $searchQueryBuilder->addSelect("CASE 
        WHEN cg.id_group = 4 THEN c.id_default_group 
        ELSE cg.id_group END as id_group");
        //dump($searchQueryBuilder);die;
        $searchQueryBuilder->leftJoin(
            'c',
            '' . pSQL(_DB_PREFIX_) . 'customer_group',
            'cg',
            'c.id_customer = cg.id_customer ' 
        );

        $searchQueryBuilder->leftJoin(
            'cg',
            '' . pSQL(_DB_PREFIX_) . 'group_lang',
            'gcl',
            'id_group = gcl.id_group AND gcl.id_lang = '.(int) $this->context->language->id
        );

在 LeftJoin 中使用别名列时出现错误

【问题讨论】:

  • 你能显示完整的错误信息吗?
  • SQLSTATE[23000]:违反完整性约束:1052 on 子句中的列 'id_group' 不明确
  • @Ahmed,请将任何相关详细信息(例如错误消息)放入问题本身,而不是 cmets。此外,如果您能指出您尝试解决问题的方法以及这些实验的结果,那将很有帮助。

标签: php mysql sql symfony php-7


【解决方案1】:

表示“id_group”名称的列不止一列。

例如,当我们在两个表“用户和主题”之间使用连接时,现在两个表都有列“id”,我们使用“group by id”

系统将错误列“id”不明确。所以我们需要知道“group by”使用的是哪个表的列id。

类似这样的:

“GROUP BY users.id”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多