Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 在lua中有没有一种方法可以在不循环的情况下在表中查找值?_Loops_Lua_Nested Loops_Postgresql 9.2 - Fatal编程技术网

Loops 在lua中有没有一种方法可以在不循环的情况下在表中查找值?

Loops 在lua中有没有一种方法可以在不循环的情况下在表中查找值?,loops,lua,nested-loops,postgresql-9.2,Loops,Lua,Nested Loops,Postgresql 9.2,下表显示了单个小部件的数据: id , c_id, grp, grp_name , label , seq, type , field, field_type , value 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , dgmp , text , 0 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , ex

下表显示了单个小部件的数据:

 id  , c_id, grp,   grp_name ,       label      , seq, type , field, field_type , value    
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , dgmp  , text  , 0
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , extension   , text  , 1111
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , meec   , text  , CC5C9788
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , password  , text  , test
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , fwnoansenable , boolean , false
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , fwenable , boolean , false
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , fwsenable  , boolean , false
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , slenable  , boolean ,
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg2 , fwnoans , text  ,
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , adminpassword , text  , afd((@&))
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , template  , select  , 
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , type1 , snserver  , text  , 127.0.01
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg2 , fwallenable  , boolean , false
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg2 , password  , text  ,
 246 , 17 , type1 , type1 grp1 , 5 - Widget XXX , 7 , reg1 , cerid  , text  ,
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , chistoryenable , boolean , true
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , sdenable , boolean , true
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , mailcback  , text  ,
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , mb   , text  ,
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , dndenable   , boolean , true
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , cwtenable , boolean , true
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , fwing  , boolean , true
 246 , 11 , type2 , type2 grp3 , 1 - Widget YYY , 1 , type2 , hleenable , boolean , false
 246 , 15 , type3 , type3 grpA , 3 - Widget MMM , 3 , type3  , free  , boolean , false
我想知道是否有一种方法可以查找多个字段值,而不必遍历每个细节记录,因为我可能会有多达10000个小部件,每个小部件都有这么多的细节

我需要提取“字段”的值:

  field           value I'm expecting
  meec             CC5C9788
  extension        1111
  hleenable    true
我还需要提取所有唯一的c_id和标签。那么比如说,, 我需要提取以下数据:

 17, '5 - Widget XXX'
 11, '1 - Widget YYY'
 15, '3 - Widget MMM'
如果我必须循环浏览每一条记录,我会的,但我想知道是否有另一种更有效的方式,我没有想到

例如,在我使用ADO的那一天,我可以对csv文件运行select语句,即使它不是数据库。 类似地,我想知道是否可以将内存中的lua表视为db中的表,并对其运行select语句。 若否,有何其他建议?

谢谢

编辑1

下面是lua中表格的实际外观,以防有所帮助。 如您所见,它返回一个索引号,这是为我自动生成的

  widget["label"] = "widgetdetail"
widget["type"] = "grp"
widget = {}
widget[10] = {}
widget[10]["c_id"] = "17"
widget[10]["classname"] = "widget"
widget[10]["widget_id"] = "246"
widget[10]["grp"] = "grp2"
widget[10]["label"] = "5 - Widget XXX"
widget[10]["name"] = "fnoa_enable"
widget[10]["seq"] = "7"
widget[10]["type"] = "boolean"
widget[10] = "false"
widget[11] = {}
widget[11]["c_id"] = "17"
widget[11]["classname"] = "widget"
widget[11]["widget_id"] = "246"
widget[11]["grp"] = "grp2"
widget[11]["label"] = "5 - Widget XXX"
widget[11]["name"] = "extension"
widget[11]["seq"] = "7"
widget[11]["type"] = "text"
widget[11] = ""
widget[12] = {}
widget[12]["c_id"] = "17"
widget[12]["classname"] = "widget"
widget[12]["widget_id"] = "246"
widget[12]["grp"] = "grp1"
widget[12]["label"] = "5 - Widget XXX"
widget[12]["name"] = "fnoa"
widget[12]["seq"] = "7"
widget[12]["type"] = "text"
widget[12] = ""
widget[13] = {}
widget[13]["c_id"] = "17"
widget[13]["classname"] = "widget"
widget[13]["widget_id"] = "246"
widget[13]["grp"] = "grp2"
widget[13]["label"] = "5 - Widget XXX"
widget[13]["name"] = "sl_enable"
widget[13]["seq"] = "7"
widget[13]["type"] = "boolean"
widget[13] = ""
widget[14] = {}
widget[14]["c_id"] = "17"
widget[14]["classname"] = "widget"
widget[14]["widget_id"] = "246"
widget[14]["grp"] = "grp1"
widget[14]["label"] = "5 - Widget XXX"
widget[14]["name"] = "f_busy"
widget[14]["seq"] = "7"
widget[14]["type"] = "text"
widget[14] = ""
widget[15] = {}
widget[15]["c_id"] = "17"
widget[15]["classname"] = "widget"
widget[15]["widget_id"] = "246"
widget[15]["grp"] = "grp2"
widget[15]["label"] = "5 - Widget XXX"
widget[15]["name"] = "f_all"
widget[15]["seq"] = "7"
widget[15]["type"] = "text"
widget[15] = ""
widget[16] = {}
widget[16]["c_id"] = "17"
widget[16]["classname"] = "widget"
widget[16]["widget_id"] = "246"
widget[16]["grp"] = "widget"
widget[16]["label"] = "5 - Widget XXX"
widget[16]["name"] = "timezone"
widget[16]["seq"] = "7"
widget[16]["type"] = "text"
widget[16] = "EST5EDT"
widget[17] = {}
widget[17]["c_id"] = "17"
widget[17]["classname"] = "widget"
widget[17]["widget_id"] = "246"
widget[17]["grp"] = "grp2"
widget[17]["label"] = "5 - Widget XXX"
widget[17]["name"] = "fb_enable"
widget[17]["seq"] = "7"
widget[17]["type"] = "boolean"
widget[17] = "false"
等等

编辑2


这些数据来自我无法控制的postgresql数据库

若要使用Lua表进行此操作,您需要将数据转换为一个表

比如说

widgets =
{[246] = {[17] = {... meec = "CC5C9788"; extension = "1111"; hleenable = true};
          [11] = {... }
          ...}
...}
然后你可以向上看

widgets[246][17].meec
等等

这是否适用于您取决于小部件数据的语义,这在您的问题中并不明显

如果您想运行通用查询,我建议您使用诸如SQLite之类的数据库。有几个Lua模块支持SQLite,包括,它也可以作为Lua-rock提供。SQLite将导入格式良好的csv文件

在问题编辑1之后

如果所有
小部件[“值”][xx][“名称”]
字段值都是唯一的,则可以对数据进行一次传递:

widget.index = {}
for i,t in pairs(widget.value) do widget.index[t.name] = i end
然后您可以使用查找字段,例如

widget.value[widget.index.meec].value

Doug,我将用实际的lua表布局而不是上面看到的逻辑布局更新我的示例…Doug,请参见编辑1。这显示了实际的lua表的外观。在此期间,我将尝试阅读您包含的wiki文章。很遗憾,将数据库从postgresql更改为sqlite是不可能的。@dot,我已经根据您的示例表添加了一个解决方案。你不能直接查询Postgres数据库吗?道格,你的例子给了我一些如何实现这一点的想法。谢谢