我有两张桌子:
------- ----------
| User | | Order |
|-------| |----------|
| id | | id |
|-------| |----------|
| name | | user_id |
------- |----------|
|start_time|
----------
比如说,我有记录:
User {id: 1, name: "Sam"};
User {id: 2, name: "Andrew"};
Order {id:1, user_id: 1, start_time: '2020-00-00 00:00:00'}
Order {id:2, user_id: 1, start_time: '2021-00-00 00:00:00'}
Order {id:3, user_id: 1, start_time: '2022-00-00 00:00:00'}
我如何运行posgre sql select,以在任何情况下获取用户,即使订单不存在?喜欢:
SELECT u.*, o.start_time FROM User u
INNER JOIN Order o on o.user_id = u.id AND o.start_time = '2030-00-00 00:00:00'
where u.name = 'Sam'
所以,基本上,我想在任何情况下获得用户。并过滤孩子(加入表)
在Spring Data Jpa术语中,我希望在任何情况下都能接收到用户,如果用户存在于数据库中,我希望通过我的sql查询过滤他/她的订单。
如果我尝试使用不存在的过滤订单获取用户,我不会从我的查询中接收用户
Java代码,域对象:
//Entity, Geter, Setter, equalsAndHashCode
class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Unique
private String name;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Orders> orders;
}
class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "id", nullable = false)
private User user;
private OffsetDateTime startTime;
}
存储库:
public interface UserRepository extends JpaRepository<User, Long> {
@Query(to be done)
Optional<User> findByUserNameWithFilteredOrders(@Param("userName") String userName,
@Param("startTime") OffsetDateTime startTime);
}
JTYF:我只对自定义查询感兴趣,做findBy。。。生成查询对我来说并不有趣,因为我有更复杂的情况。
似乎本机查询应该是左连接,而不是内部连接。
SELECT u.*,
o.start_time
FROM User u
LEFT JOIN Order o ON o.user_id = u.id
WHERE (o.start_time = '2030-00-00 00:00:00' or o.user_id = NULL)
这将为您提供所有用户,无论他们是否参与关系顺序。
得到一些问题与桌子布线。我需要为每个用户uniq购物车,在那里我将存储书籍。 当我在DB中打开AppUser表时,“cart_id”列始终为NULL。 购物车表只有id列-不确定是否应该这样 谢谢! 购物车
问题内容: 我有一个查询表,说具有字段CityId,CityName的城市 我有一个订单表,其中包含以下字段:CityId,CustId,CompletedOrders,PendingOrders 我想要一个表/报告,列出所有城市中给定客户的订单详细信息,即我需要的结果是: 怎么做 ? 问题答案: 这将返回所需的所有行,但是对于其中不存在的行将返回值,因此您将获得: 取而代之的解决方案取决于您的数
T-SQL 组合来自两个或多个表的记录。它用于将两个或多个表中的记录连接到数据库中。JOIN 用于通过使用彼此相等的值连接许多表中的字段。 假设有下面两张表,(a) CUSTOMERS表,记录如下—— (b) 另一个表 ORDERS,记录如下 - 在 SELECT 语句中连接这两个表,如下所示 - 执行上面查询语句,得到以下结果 - 连接在 WHERE 子句中执行。许多运算符将用于连接表,例如:
在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,它们可以在任何时候增加新的数据类型。为不同实体创建新的表,之后通过连接进行查询。 连接可以在语句的子句或子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以
我想使用Spring JPA规范连接函数 这是我的表格代码: > } 我如何在规范中加入表中的学生和家长?
我需要在火花中连接2个表。但是我首先过滤掉第二个表的一部分,而不是完全连接2个表: 我想在这种情况下使用广播连接。 Spark有一个参数,用于定义广播连接的最大表大小:: 配置在执行联接时将广播到所有工作节点的表的最大大小(以字节为单位)。通过将该值设置为-1,可以禁用广播。请注意,当前统计信息仅支持已运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元