2016-02-09 80 views
1

我需要从数据库中选择不同的组合可能性几个值检查事件,并做了正确的行动,每个:联合Select语句

例事件:“男人穿1930绿色意大利帽子”

需要得到在这样的数据库中的所有值:

对象 - 颜色 - 国家 - 年

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) 

例如,这样我就可以开始一个戴帽子的男士的所有程序,以及一个穿绿色意大利帽子的男士的具体程序。

什么是最有效的方法来做到这一点?

+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 i=1,#colors+1 do 
    --etc 
end