Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/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
为什么这个SQLite查询在AS3 AIR(Android)项目中不起作用?_Android_Sqlite_Actionscript 3_Air - Fatal编程技术网

为什么这个SQLite查询在AS3 AIR(Android)项目中不起作用?

为什么这个SQLite查询在AS3 AIR(Android)项目中不起作用?,android,sqlite,actionscript-3,air,Android,Sqlite,Actionscript 3,Air,希望在这里尝试询问,至少有一个AS3/AIR程序员正在进行再培训,并且AIR尚未完全死亡……: 我有一个AS3项目(关于酒瓶),使用Android版的Adobe(Harman)AIR编译,包含一个小型SQLite数据库(然后是1000行),我需要运行这个查询(跨所选参数查找相同瓶子的组,然后内部将它们连接回源表以获取其余的行,通过对x.items进行分组减少重复,并使用联合所有分别对满瓶和空瓶执行所有这些操作,将它们连接回一个结果): 一如既往地将此查询以缩小的形式提供给SQLstatement

希望在这里尝试询问,至少有一个
AS3/AIR
程序员正在进行再培训,并且
AIR
尚未完全死亡……: 我有一个
AS3
项目(关于酒瓶),使用Android版的
Adobe(Harman)AIR
编译,包含一个小型
SQLite
数据库(然后是1000行),我需要运行这个查询(跨所选参数查找相同瓶子的组,然后
内部将它们连接回源表以获取其余的行,通过
x.items
进行分组减少重复,并使用
联合所有
分别对满瓶和空瓶执行所有这些操作,将它们连接回一个结果):

一如既往地将此查询以缩小的形式提供给SQLstatement对象的文本属性(我在project中还有一些其他更简单的查询,它们工作得很好):

现在我的问题是: 当我在我的应用程序中运行此查询时,我从
DB
中没有得到任何结果,没有错误,应用程序只是停留在这一点上。如果我在PC中使用
SQLiteStudio
在同一个DB上运行此查询,所有工作正常(我在约20毫秒内获得了所需的结果)。我在几个在线验证器中检查了这个查询,所有的验证器都说它是有效的。我还检查了在应用程序中处理查询字符串时,查询字符串是否完整,它是否完整。那么为什么它不工作呢?我是否触及了
AS3 AIR
(SQL字符串长度,查询中的嵌套选择等)中的任何限制,或者问题可能在哪里


忘了提一下,这两个部分(联合之前和之后都是
)单独处理可以正常工作,但在一个查询中一起处理则不行。

Hi.可能需要检查您的查询是否会导致AIR内存不足。我在这里看到一个三重嵌套的SELECT,如果没有适当的计划或其他东西,SQLite引擎可能无法正确处理此选择深度。此外,您可能应该重构查询以使其更简单一些如果可能的话。
SELECT b.vinoID,
       b.vinoteka,
       b.jmeno,
       b.typ,
       b.rocnik,
       b.jakost,
       b.kategorie,
       b.zeme,
       b.vinar,
       b.dateIn,
       b.dateOut,
       b.hodnoceni,
       x.pocet,
       x.items
  FROM (
           SELECT barcode,
                  jmeno,
                  odruda,
                  typ,
                  rocnik,
                  jakost,
                  alkohol,
                  objem,
                  kategorie,
                  cukr,
                  kyseliny,
                  zeme,
                  oblast,
                  podoblast,
                  obec,
                  trat,
                  vinar,
                  max(dateIn) AS dateIn,
                  count(vinoID) AS pocet,
                  group_concat(vinoID) AS items
             FROM _bottles
            WHERE dateOut IS NULL AND barcode = '8595004640052'
            GROUP BY barcode,
                     jmeno,
                     odruda,
                     typ,
                     rocnik,
                     jakost,
                     alkohol,
                     objem,
                     kategorie,
                     cukr,
                     kyseliny,
                     zeme,
                     oblast,
                     podoblast,
                     obec,
                     trat,
                     vinar
       )
       AS x
       INNER JOIN
       _bottles AS b ON (x.barcode = b.barcode OR (x.barcode IS NULL AND b.barcode IS NULL) ) AND 
                        x.jmeno = b.jmeno AND 
                        (x.odruda = b.odruda OR (x.odruda IS NULL AND b.odruda IS NULL) ) AND 
                        x.typ = b.typ AND 
                        x.rocnik = b.rocnik AND 
                        (x.jakost = b.jakost OR (x.jakost IS NULL AND b.jakost IS NULL) ) AND 
                        x.alkohol = b.alkohol AND 
                        x.objem = b.objem AND 
                        (x.kategorie = b.kategorie OR (x.kategorie IS NULL AND b.kategorie IS NULL) ) AND 
                        x.cukr = b.cukr AND 
                        x.kyseliny = b.kyseliny AND 
                        (x.zeme = b.zeme OR (x.zeme IS NULL AND b.zeme IS NULL) ) AND 
                        (x.oblast = b.oblast OR (x.oblast IS NULL AND b.oblast IS NULL) ) AND 
                        (x.podoblast = b.podoblast OR (x.podoblast IS NULL AND b.podoblast IS NULL) ) AND 
                        (x.obec = b.obec OR (x.obec IS NULL AND b.obec IS NULL) ) AND                        
                        (x.trat = b.trat OR (x.trat IS NULL AND b.trat IS NULL) ) AND 
                        (x.vinar = b.vinar OR (x.vinar IS NULL AND b.vinar IS NULL) ) AND 
                        x.dateIn = b.dateIn AND 
                        b.dateOut IS NULL
  GROUP BY x.items
UNION ALL
SELECT b.vinoID,
       b.vinoteka,
       b.jmeno,
       b.typ,
       b.rocnik,
       b.jakost,
       b.kategorie,
       b.zeme,
       b.vinar,
       b.dateIn,
       b.dateOut,
       b.hodnoceni,
       x.pocet,
       x.items
  FROM (
           SELECT barcode,
                  jmeno,
                  odruda,
                  typ,
                  rocnik,
                  jakost,
                  alkohol,
                  objem,
                  kategorie,
                  cukr,
                  kyseliny,
                  zeme,
                  oblast,
                  podoblast,
                  obec,
                  trat,
                  vinar,
                  max(dateOut) AS dateOut,
                  count(vinoID) AS pocet,
                  group_concat(vinoID) AS items
             FROM _bottles
            WHERE dateOut IS NOT NULL AND barcode = '8595004640052'
            GROUP BY barcode,
                     jmeno,
                     odruda,
                     typ,
                     rocnik,
                     jakost,
                     alkohol,
                     objem,
                     kategorie,
                     cukr,
                     kyseliny,
                     zeme,
                     oblast,
                     podoblast,
                     obec,
                     trat,
                     vinar
       )
       AS x
       INNER JOIN
       _bottles AS b ON (x.barcode = b.barcode OR (x.barcode IS NULL AND b.barcode IS NULL) ) AND 
                        x.jmeno = b.jmeno AND 
                        (x.odruda = b.odruda OR (x.odruda IS NULL AND b.odruda IS NULL) ) AND 
                        x.typ = b.typ AND 
                        x.rocnik = b.rocnik AND 
                        (x.jakost = b.jakost OR (x.jakost IS NULL AND b.jakost IS NULL) ) AND 
                        x.alkohol = b.alkohol AND 
                        x.objem = b.objem AND 
                        (x.kategorie = b.kategorie OR (x.kategorie IS NULL AND b.kategorie IS NULL) ) AND 
                        x.cukr = b.cukr AND 
                        x.kyseliny = b.kyseliny AND 
                        (x.zeme = b.zeme OR (x.zeme IS NULL AND b.zeme IS NULL) ) AND 
                        (x.oblast = b.oblast OR (x.oblast IS NULL AND b.oblast IS NULL) ) AND 
                        (x.podoblast = b.podoblast OR (x.podoblast IS NULL AND b.podoblast IS NULL) ) AND 
                        (x.obec = b.obec OR (x.obec IS NULL AND b.obec IS NULL) ) AND 
                        (x.trat = b.trat OR (x.trat IS NULL AND b.trat IS NULL) ) AND 
                        (x.vinar = b.vinar OR (x.vinar IS NULL AND b.vinar IS NULL) ) AND 
                        x.dateOut = b.dateOut
 GROUP BY x.items
 ORDER BY b.dateOut DESC
bottlesCode.text = "SELECT b.vinoID, b.vinoteka, b.jmeno, b.typ, b.rocnik, b.jakost, b.kategorie, b.zeme, b.vinar, b.dateIn, b.dateOut, b.hodnoceni, x.pocet, x.items " +
                                    "FROM (SELECT barcode, jmeno, odruda, typ, rocnik, jakost, alkohol, objem, kategorie, cukr, kyseliny, zeme, oblast, podoblast, obec, trat, vinar, max(dateIn) AS dateIn, count(vinoID) AS pocet, group_concat(vinoID) AS items " +
                                    "FROM _bottles WHERE dateOut IS NULL AND barcode='8595004640052' GROUP BY barcode, jmeno, odruda, typ, rocnik, jakost, alkohol, objem, kategorie, cukr, kyseliny, zeme, oblast, podoblast, obec, trat, vinar) " +
                                    "AS x INNER JOIN _bottles AS b ON (x.barcode = b.barcode OR (x.barcode IS NULL AND b.barcode IS NULL)) " +
                                    "AND x.jmeno = b.jmeno AND (x.odruda = b.odruda OR (x.odruda IS NULL AND b.odruda IS NULL)) AND x.typ = b.typ AND x.rocnik = b.rocnik AND (x.jakost = b.jakost OR (x.jakost IS NULL AND b.jakost IS NULL)) " +
                                    "AND x.alkohol = b.alkohol AND x.objem = b.objem AND (x.kategorie = b.kategorie OR (x.kategorie IS NULL AND b.kategorie IS NULL)) AND x.cukr = b.cukr AND x.kyseliny = b.kyseliny AND (x.zeme = b.zeme OR (x.zeme IS NULL AND b.zeme IS NULL)) " +
                                    "AND (x.oblast = b.oblast OR (x.oblast IS NULL AND b.oblast IS NULL)) AND (x.podoblast = b.podoblast OR (x.podoblast IS NULL AND b.podoblast IS NULL)) AND (x.obec = b.obec OR (x.obec IS NULL AND b.obec IS NULL)) " +
                                    "AND (x.trat = b.trat OR (x.trat IS NULL AND b.trat IS NULL)) AND (x.vinar = b.vinar OR (x.vinar IS NULL AND b.vinar IS NULL)) AND x.dateIn = b.dateIn AND b.dateOut is NULL " +
                                    "GROUP BY x.items UNION ALL " +
                                    "SELECT b.vinoID, b.vinoteka, b.jmeno, b.typ, b.rocnik, b.jakost, b.kategorie, b.zeme, b.vinar, b.dateIn, b.dateOut, b.hodnoceni, x.pocet, x.items " +
                                    "FROM (SELECT barcode, jmeno, odruda, typ, rocnik, jakost, alkohol, objem, kategorie, cukr, kyseliny, zeme, oblast, podoblast, obec, trat, vinar, max(dateOut) AS dateOut, count(vinoID) AS pocet, group_concat(vinoID) AS items " +
                                    "FROM _bottles WHERE dateOut IS NOT NULL AND barcode='8595004640052' GROUP BY barcode, jmeno, odruda, typ, rocnik, jakost, alkohol, objem, kategorie, cukr, kyseliny, zeme, oblast, podoblast, obec, trat, vinar) AS x INNER JOIN _bottles AS b " +
                                    "ON (x.barcode = b.barcode OR (x.barcode IS NULL AND b.barcode IS NULL)) AND x.jmeno = b.jmeno AND (x.odruda = b.odruda OR (x.odruda IS NULL AND b.odruda IS NULL)) AND x.typ = b.typ AND x.rocnik = b.rocnik " +
                                    "AND (x.jakost = b.jakost OR (x.jakost IS NULL AND b.jakost IS NULL)) AND x.alkohol = b.alkohol AND x.objem = b.objem AND (x.kategorie = b.kategorie OR (x.kategorie IS NULL AND b.kategorie IS NULL)) " +
                                    "AND x.cukr = b.cukr AND x.kyseliny = b.kyseliny AND (x.zeme = b.zeme OR (x.zeme IS NULL AND b.zeme IS NULL)) AND (x.oblast = b.oblast OR (x.oblast IS NULL AND b.oblast IS NULL)) " +
                                    "AND (x.podoblast = b.podoblast OR (x.podoblast IS NULL AND b.podoblast IS NULL)) AND (x.obec = b.obec OR (x.obec IS NULL AND b.obec IS NULL)) AND (x.trat = b.trat OR (x.trat IS NULL AND b.trat IS NULL)) " +
                                    "AND (x.vinar = b.vinar OR (x.vinar IS NULL AND b.vinar IS NULL)) AND x.dateOut = b.dateOut " +
                                    "GROUP BY x.items " +
                                    "ORDER BY b.dateOut ASC";