[英]Many to Many - Prolog / Excel
在Prolog中,我有一個這樣的數據庫:
invoice(number,item,product,value).
invoice('2015/01',1,coffee,100).
invoice('2015/02',1,water,50).
invoice('2015/02',2,coffee,100).
invoice('2015/03',1,milk,80).
invoice('2015/03',2,cake,150).
我需要問Prolog這個問題:多少張發票沒有咖啡或水? 在這種情況下,答案將為1(發票編號2015/03)
我也想在Excel DB中回答這個問題。 我使用“ = countifs”功能,但它只給我提供了不是咖啡或水的物品數量...像這樣:
=COUNTIFS(D4:D11;"<>"&"coffee";D4:D11;"<>"&"water")
在這個例子中給我2
但是我只希望有發票數量。
這是筆錄:
$ gprolog
GNU Prolog 1.4.4 (64 bits)
....
Copyright (C) 1999-2013 Daniel Diaz
| ?- ['invoice'].
['invoice'].
yes
| ?- setof(N, I^P^V^(invoice(N,I,P,V), \+(P = water), \+(P = coffee)), Ns),
length(Ns, Number).
Ns = ['2015/03']
Number = 1
yes
| ?-
為了說明該解決方案是標准的,下面是使用swi-prolog的簡短抄寫:
$ swipl
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 6.6.4)
Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam
?- [invoice].
true.
?- setof(N, I^P^V^(invoice(N,I,P,V), \+(P = water), \+(P = coffee)), Ns), length(Ns, Number).
Ns = ['2015/03'],
Number = 1.
?-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.