联合选择语句

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

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

需要从数据库中获取所有这样的值:

对象 — 颜色 — 国家 — 年份

帽子   任意   任意     任意
帽子   绿色   任意     任意
帽子   绿色   意大利  任意
(...)
帽子   任意   意大利  任意
帽子   任意   意大利  1930

这样我就可以检查绑定到操作的操作:

戴着绿色,意大利和1930年的帽子
戴着绿色的帽子
戴帽子
(对于所有可能性存在的情况,依此类推)

这样我就可以开始执行男人戴帽子的所有程序,以及为男人戴绿色意大利帽子的特定程序,例如。

最有效的方法是什么?

点赞
用户5352026
用户5352026

你在谈论什么样的数据库? 这是一个 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

结果会输出每个可能的组合。唯一可能不正确的是你的“any”的实现。

如果你想要没有颜色/国家/帽子的组合,你可以在列表中添加“”。最好使用数字循环并添加额外的迭代,例如:

for i=1,#colors+1 do
    -- etc
end
2016-02-09 19:13:28