组合选择声明

时间:2016-02-09 18:48:29

标签: database lua

我需要从数据库中选择几个具有不同组合可能性的值来检查事件并对每个值执行正确的操作:

示例事件:“男士戴着一顶1930年的绿色意大利帽子。”

需要获取数据库中的所有值,如下所示:

object - color - country - year

hat    -- any   -- any     -- any
hat    -- green -- any     -- any
hat    -- green -- Italian -- any
(...)    
hat    -- any   -- Italian -- any
hat    -- any   -- Italian -- 1930

在某种程度上,我可以检查绑定到的行为:

Wearing a green, Italian, 1930 hat
Wearing a green, hat
Wearing a hat
(And so on for all the possibilities that exists)

通过这种方式,我可以为一个戴帽子的男人和一个戴着绿色意大利帽子的男人的具体程序开始所有程序。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:1)

您在谈论什么样的数据库? 这是一个SQL数据库吗? 你有一张颜色表,一个国家,......? 你究竟想做什么?从该示例事件创建值或从值创建所有可能的事件?

因为你用Lua标记了这个,我假设那些"属性"在表格中如下:

local colors = {"green","red"}
local countries = {"Italian","Mexican"}
local years = {1930,2016}

我猜你想要从这些属性中创建所有可能的事件:

for _,color in pairs(colors) do
    for _,country in pairs(countries) do
        for _,year in pairs(years) do
            print("Wearing a "..table.concat({color,country,year},", ").." hat")
        end
    end
end

您可以在Lua演示页面上运行此代码:http://www.lua.org/cgi-bin/demo

结果是输出了每种可能的组合。唯一可能不正确的是执行你的"任何"。

如果你想要没有颜色/国家/帽子的组合,你可以添加""到列表。使用数字for循环并添加额外的迭代可能会更好,如:

for i=1,#colors+1 do
    --etc
end