4d-database - 4D数据库ORDA查询:使用相关记录的长度查询
问题描述
背景
我正在使用 4D 数据库 (v17.5) 并尝试查询记录。我有以下简化模式:
Customers (table)
-CustomerID (field)
-CompanyName (field)
-City (field)
-State (field)
SalesOrders (table)
-CustomerID (field)
-OrderTotal (field)
它们通过多对一自动关系联系在一起:
[Customers]CustomerID (O)<-------------------------(M) [SalesOrders]CustomerID
(ParentCustomer) (ChildSalesOrders)
我可以使用以下任一方式查询以获取一组 [SalesOrders] 记录:
ds.SalesOrders.query("OrderTotal > 500 AND ParentCustomer.State = 'New York'")
ds.Customers.query("State = 'New York' AND ChildSalesOrders.OrderTotal > 500").ChildSalesOrders
问题
有的客户根本没有订单,想找一组相关订单为零的客户,就麻烦了。
我已经完成了以下工作:
$voCustomersToCheck:=ds.Customers.query("State = 'New York')
$voCustomersWithoutOrders:=ds.Customers.newSelection()
For each($voCustomer;$voCustomersToCheck)
If ( $voCustomer.ChildSalesOrders.length > 0 )
$voCustomersWithoutOrders.add($voCustomer)
End if
End for each
我想做的是:
$voCustomersWithoutOrders:=ds.Customers.query("State = 'New York' AND ChildSalesOrders.length = 0')
但是,这行不通。
问题
我想要完成的事情可能吗?
解决方案
在 ORDA 中,您可以使用 NULL 关键字;所以解决方案是写:
$voCustomersWithoutOrders:=ds.Customers.query("State = 'New York' AND ChildSalesOrders = NULL')
推荐阅读
- c++ - C ++:按数字错误对链表进行排序
- android - 是否可以在android studio中动态显示数据库中的元组?
- xslt - XSLT 子分组
- c# - 将字节数组传递给 PixelShaderEffect
- python - 我应该如何测试字典总是以相同的顺序排列?
- apache-spark - OutOfMemoryError : Spark 中的 Java 堆空间
- multithreading - 线程端口扫描器python
- git - Git LFS 删除比提交更早的文件
- python - Can't save related objects in django models using pre_save signal
- mariadb - 索引整列或子字符串