首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在inner和left join查询中有更多的行,如何显示一行?

如果在inner和left join查询中有更多的行,如何显示一行?
EN

Stack Overflow用户
提问于 2017-01-21 14:49:08
回答 1查看 38关注 0票数 0

我在ps_shop表中有多个商店,它的一些商店在ps_storeinfo表中,但那些ps_shop表中的商店不在ps_storeinfo表中,需要插入到ps_storeinfo中的用户id和商店名称。这里ps_shop表的店名= ps_storeinfo表中的storename。在这里,我已经为此编写了sql查询,我正在获取所有数据,但问题是,如果我的SQL有多个用户,则会有多个用户访问。我需要一个用户的一个商店。

ps_ employee_shop表中,根据商店id为商店分配用户。而在ps_ employee表中则是为用户准备的。这是针对prestashop 1.6的。

我的SQL如下所示:

代码语言:javascript
复制
$table_prefix = _DB_PREFIX_; 

'SELECT ps.*, pe.email, pe.firstname, pe.lastname, pes.id_employee,psi.storename 
        FROM '.$table_prefix.'shop ps 
        LEFT JOIN '.$table_prefix.'storeinfo psi  ON ps.name = psi.storename 
        INNER JOIN '.$table_prefix.'employee_shop pes ON ps.id_shop = pes.id_shop
        INNER JOIN '.$table_prefix.'employee pe ON pes.id_employee = pe.id_employee where ps.id_shop <>1 and pe.id_employee <>1
         GROUP BY pes.id_employee 
        ';

输出图像为:

EN

回答 1

Stack Overflow用户

发布于 2017-01-21 15:10:58

如果JOIN右侧的表中存在多个具有匹配ON键的实体,则任何关系数据库引擎都将为右侧的每个匹配实体返回一行,复制JOIN子句的左侧。

在所描述的场景中,您需要决定要返回哪个用户。第一个是按字母顺序排序的?最近创建的那个?

根据答案,您需要将连接与相关子查询一起使用。下面是获取id_employee值最高的员工的示例

代码语言:javascript
复制
SELECT
    ps.*, pe.email, pe.firstname, pe.lastname, pes.id_employee,psi.storename
FROM
    '.$table_prefix.'shop ps
    LEFT JOIN '.$table_prefix.'storeinfo psi ON ps.name = psi.storename 
    INNER JOIN (
        SELECT
            pe.email, pe.firstname, pe.lastname, pes.id_employee
        FROM
            '.$table_prefix.'employee pe
            '.$table_prefix.'employee_shop pes ON pes.id_employee = pe.id_employee
        WHERE
            pe.id_employee <> 1
            AND ps.id_shop = pes.id_shop
        ORDER BY
            pe.id_employee DESC
        LIMIT 1
    )
WHERE
    ps.id_shop <>1

正如您可以看到的,这实际上是将生成的员工列表限制为只有一条记录,以避免重复。在本例中,列表是按id_employee排序的,但正确的排序取决于需要实现的业务逻辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41776531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档