1

我目前正在尝试使用密码。我有一个简单的组件设置,通过具有属性“price”(merchant-[:sells{price:10}]->component)的房地产“sells”连接到商家我做了一个计算最低价格的密码查询,如果您从同一商家购买产品。

MATCH sup-[s:sells]->component 
WITH SUM(s.price) AS total, sup 
RETURN sup, total 
ORDER BY total ASC

现在,虽然这正在工作,但我在寻找最便宜的价格时遇到了问题,以防 2 个或更多供应商被捆绑。我想得到类似的东西

_________________________
|  price  |   supplier  |
-------------------------
|   60    |    conrad   |
|         |    amazon   |
-------------------------

你可以在这里查看我的设置: http ://console.neo4j.org/?id=wpz165

编辑:好的,我找到了一种方法,虽然它不漂亮。

MATCH sup-[s:sells]->component 
WITH SUM(s.price) AS minprice, sup 
ORDER BY minprice 
LIMIT 1 
MATCH sup2-[s2:sells]->component2 
WITH SUM(s2.price) AS total2, sup2, minprice 
WHERE total2 = minprice 
RETURN minprice, sup2

这是如何运作的?那么第一部分找到最低价格(通过订购并仅返回第一行)。第二部分再次运行整个查询,并过滤掉没有最低价格的项目......所以整个查询运行两次。有更好的主意吗???

4

1 回答 1

0

就我的审美而言,尽管它确实需要三个 WITH 子句,但它并不那么难看。

  1. 供应商对所有组件的总价
  2. 查找最低价格
  3. 以最低价格退回所有供应商

    MATCH sup-[s:sells]->component 
    WITH sup, SUM(s.price) AS price_sum 
    MATCH sup, price_sum 
    WITH MIN(price_sum) AS price_min 
    MATCH sup2-[s2:sells]->component2 
    WITH sup2, SUM(s2.price) AS price_sum2, price_min 
    WHERE price_sum2 = price_min 
    RETURN sup2, price_sum2
    
于 2013-07-09T13:35:11.567 回答