首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Geeting的结果是使用SQL或在需要时使用代码连接多个if (4)表(python)

Geeting的结果是使用SQL或在需要时使用代码连接多个if (4)表(python)
EN

Stack Overflow用户
提问于 2018-05-09 08:34:43
回答 1查看 70关注 0票数 0

我正在使用PostgreSQL 10和Python3,我知道如何进行简单的选择或连接,当需要组合4个相关的表2×2时,购买我有问题。

我提到,我使用Phyton,以防有必要使用代码组合查询。

我有以下表: Company、CompanyLogo、Product、ProductImage,如下所示

  1. 关系:
代码语言:javascript
运行
AI代码解释
复制
- Company Logo O1O with Company
- Product has FK to Company
- ProductImage FK with Product

  1. 结构 公司Id = slug 1 1
代码语言:javascript
运行
AI代码解释
复制
    Logo
    Id | path | company_id
    1     url        1


   -----------
    Product
    Id | company_id
    1     1
    2     1


    ProductImage

    Id | path | product_id
    1     url   1
    2     url   1 
    3     url   1

我需要:

  1. 获取所有公司的列表,并为每个公司获取:
代码语言:javascript
运行
AI代码解释
复制
- the company slug
- the logo
- up to 3 products and their first image

  1. 建立一个基于id的公司,并:
代码语言:javascript
运行
AI代码解释
复制
- the company slug
- the logo
- all product and their first image

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-09 17:58:49

这里的问题是,您对产品或图像的数量有这样的限制。

我试图在子查询中解决这个问题,通过确定较低in的数量,只选择每个公司/产品的前n个产品/图片。只有在同一公司或产品的ID小于或等于n个ID的情况下,ID才匹配。换句话说,每个公司/产品的产品/图像的n(或小于n,如果没有更多)的最低it将使它的结果。对于logo来说,如果我说得对,company_id是唯一的,所以这里不需要这个步骤。(如果我误解了这一点,这将是一个子查询模拟的其他。)对于确实获取第一张图片的图片,假定ID会自动递增。所以,如果你的问题中的“第一”必须从字面上看,那也是给出的。

我以为你想看到一个公司/产品,即使没有标志/产品/图片。所以我用了LEFT JOIN

  1. 两个子查询,一个用于product,一个用于productimage: 从c公司选择c.id,c.slug,l.id,l.path,p.id,i.id,i.url,l.company_id = c.id LEFT JOIN (选择pi.id,来自产品pi的pi.company_id (从产品pii中选择计数(*),其中pii.company_id = pi.company_id和pii.id <= pi.id) <= 3) p= c.id左联接(选择i.id,i.product_id,来自productimage ii的i.path,其中(从productimage iii选择计数(*),其中iii.product_id = ii.product_id和iii.id <= ii.id) <= 1) I在i.product_id =p.id上;
  2. productimage的一个子查询;将?替换为相应的公司ID: 选择c.id,c.slug,l.id,l.path,p.id,i.idi.url从c公司左加入徽标l ON l.company_id = c.id左连接产品p ON p.company_id = c.id左连接(选择i.id,i.product_id,来自productimage ii的i.path,其中(从productimage iii选择计数(*),其中iii.product_id = ii.product_id和iii.id <= ii.id) <= 1) I) ON i.product_id = p.id,其中company_id =?

(未经测试,因为没有提供DDL或DML )。

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

https://stackoverflow.com/questions/50258168

复制
相关文章
使用Python pandas读取多个Excel工作表
本文将尝试使用Python pandas读取来自同一文件的多个Excel工作表。我们可以通过两种方式来实现这一点:使用pd.read_excel()方法,并使用可选的参数sheet_name;另一种方法是创建一个pd.ExcelFile对象,然后解析该对象中的数据。
fanjy
2021/11/10
13.5K0
使用Python pandas读取多个Excel工作表
如何使用python连接MySQL表的列值?
MySQL 是一个开源关系数据库管理系统,广泛用于存储、管理和组织数据。使用 MySQL 表时,通常需要将多个列值组合成一个字符串以进行报告和分析。Python是一种高级编程语言,提供了多个库,可以连接到MySQL数据库和执行SQL查询。
很酷的站长
2023/08/11
6500
如何使用python连接MySQL表的列值?
使用Oracle SQL Developer 连接SQL Server
上次,将MySQL数据迁移到Oracle介绍了如何使用oracle sql developer连接mysql。同样,sql server的连接也比较相似。
williamwong
2018/07/24
3.3K0
使用Oracle SQL Developer 连接SQL Server
使用Map时,需要考虑什么
关于Java中的Map,已有很多文章讲述其较为完整的知识点了,本文不会再谈论这些知识点,而是从实际使用的角度,讲述笔者会考虑什么问题,算是对知识的一个应用,毕竟学了,最后还是要落地到使用中。
草捏子
2020/11/09
1.1K0
SQL学习之联结表的使用
1、简介:"联结(join)表"是SQL最强大的功能之一。联结是利用SQL的SELECT能执行的最重要的操作,很好地理解联结及其语法是学习SQL的极为重要的部分! 在能够有效的使用联结前,必须了解关系表以及关系型数据库设计的一些基础知识。 2、关系表 下面通过一个列子来理解关系表。 有一个包含产品目录的数据库表,其中每类物品占一行。对于每一种物品,要存储的信息包括产品描述、价格以及生产该产品的供应商。关于供应商,现在一个供应商生产多个产品,那么在何处存储供应商名、地址、联系方式等供应商信息呢?这里正确的做法
郑小超.
2018/01/24
9170
SQL学习之联结表的使用
WinDBG 使用多个路径下的符号表
在开发调试问题的过程中,我们经常使用 WinDBG 来调试崩溃、卡死或蓝屏的 Dump 文件,调试时我们需要将微软的符号表路径导入到 WinDBG 中,也需要将自己程序的符号表文件导入到 WinDBG 中,这样看 Dump 才一清二楚。导入多个符号表的方法就是在每个符号表路径后增加一个分号 ; 然后紧接着下一个符号表路径。
我与梦想有个约会
2023/10/21
3080
WinDBG 使用多个路径下的符号表
SQL三表连接查询
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135565.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/18
2.2K0
使用SQL语句创建表(建立基本表数据的sql语句是)
1.创建表的语法 create table 表名 (列1 数据类型 1,列2 数据类型) tablespace 表空间
全栈程序员站长
2022/08/02
3.5K0
使用SQL语句创建表(建立基本表数据的sql语句是)
使用SQL语句创建表_用sql语句创建员工表
create table 表名 (列1 数据类型 1,列2 数据类型) tablespace 表空间
全栈程序员站长
2022/11/19
4.2K0
使用SQL语句创建表_用sql语句创建员工表
使用SQL语句修改表数据
UPDATE语句中没有设定WHERE条件,运行时将表class中的列sonsun的值全部更新为80
玖柒的小窝
2021/10/05
1.7K0
使用SQL语句修改表数据
使用VBA自动化处理表的代码大全4
正如上面提到的一样,必须使用代表表的变量来引用表。例如,下面的语句为每个表显示汇总行。
fanjy
2023/08/30
2790
使用VBA自动化处理表的代码大全4
Oracle使用SQL传输表空间
源环境:RHEL 6.4 + Oracle 11.2.0.4 目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机 要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的环境。
Alfred Zhao
2022/05/06
3900
Laravel 使用多个数据库连接
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105853.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/09
1.5K0
Python进阶——多个装饰器的使用
1. 多个装饰器的使用示例代码 def make_div(func): """对被装饰的函数的返回值 div标签""" def inner(*args, **kwargs): return "<div>" + func() + "</div>" return inner def make_p(func): """对被装饰的函数的返回值 p标签""" def inner(*args, **kwargs): return "<p>" +
落雨
2022/03/08
29.7K0
sql中使用CASE返回多个字段
SELECT 表名称.*,CASE WHEN ujz.字段名=1 THEN (SELECT concat(jk.字段名,',',jk.字段名) from a表名称 jk WHERE ujz.字段名=jk.字段名) WHEN ujz.字段名=9 THEN (SELECT concat(jk.字段名,',',jk.字段名) from b表名称 jk WHERE ujz.字段名=jk.字段名) WHEN ujz.字段名=7 THEN (SELECT concat(jk.字段名,',',jk.字段
高大北
2022/06/14
2.3K0
sql中使用CASE返回多个字段
管理sql server表数据_sql server如何使用
表是SQL Server中最基本的数据库对象,用于存储数据的一种逻辑结构,由行和列组成, 它又称为二维表。 例如,在学生成绩管理系统中,表1–是一个学生表(student)。
全栈程序员站长
2022/09/23
1.9K0
管理sql server表数据_sql server如何使用
使用Jedis远程连接Redis时的小插曲
从Maven依赖库库中下载两个jar包,分别是commons-pool2-2.4.2.jar和jedis-2.9.0.jar,版本不作要求。将这个两个jar包导入到工程中,然后开始编写程序。
Java阿呆
2020/11/04
1.2K0
使用Jedis远程连接Redis时的小插曲
使用VBA操作表的几段代码
在Excel中,有时候你可能希望在VBA代码的帮助下动态创建表,然后在该表中进行更多的数据操作。下面是几段代码。
fanjy
2022/11/16
6380
npm时需要python
gyp是一种根据c++源代码编译的工具,node-gyp就是为node编译c++扩展的时候使用的编译工具
franket
2022/05/12
1.4K0
点击加载更多

相似问题

恒定的MySQL连接或在需要时连接

20

使用或在在多个表中操作的sql语句中使用

21

SQL使用PIVOT连接多个表

10

使用SQL &T连接多个表

10

SQL使用count连接多个表

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档