我正在尝试使用 Coldfusion8/MySQL 优化产品搜索以在移动设备上使用。
现在发生以下情况:
1. user searches for "FOO"
2. Q1: search database for no of results
3. Q2: search again to get actual data for results FROM TO depending on pagination
4. user clicks details for a product
5. redo Q1 to get no of results
6. redo Q2 to get single result
7. use single result to query for product details (sizes, colors, pricings...)
我正在寻找一种跳过重做 Q1 和 Q2 的方法,因为用户从结果集中选择了一个结果,那么我为什么要再次重建结果集以获得一个结果。
问题:
我想方法是传递一个变量,表明我只需要现有查询中记录的详细信息。假设我有结果 1-20,并且我传递了一个变量“DETAIL”和一个文章编号“123”,我将如何从现有结果集中选择匹配记录 = 如何从结果集中选择特定记录?
编辑: 所以我认为我的情况的唯一方法是第一次运行查询,将结果存储在 Session.storage 中,然后从存储中选择相应的记录与重新运行我的初始搜索。
Query of Queries 不起作用,因为我的初始查询在 cfinvoke 方法中,所以当它完成后,它就消失了,在下一次通过时,我无法查询最后一个 cfinvoke 的结果。
我还尝试将其存储到我的 cfc 变量范围中。也不起作用,我想也是出于同样的原因。我不想开始使用 cfobject,因为我仍在运行 CF8,而且我正在阅读很多关于 cfobject 如何影响性能的内容。
反正。在我的第一个名为“结果”的查询中,我现在正在存储
<cfset Session.storate = results>
当我转储会话存储时,我得到:
catch - query
CACHED: false
EXECUTIONTIME: 2031
SQL: SELECT a.*, p.ek, p.vk, p.x, p.y
FROM arts a
LEFT JOIN p ON
...
LEFT JOIN f ON
...
WHERE a.aktiv = "ja"
AND
... 20 conditions ...
SQLPARAMETERS: [array]
1) %402%
... 20 parameters
RESULTSET:
[Record # 1]
a: true
style: 402
price: 2.3
currency: CHF
...
[Record # 2]
a: true
style: 402abc
...
我现在的问题是:
如何循环session.storage并检查样式?如果找到,这是我的结果,我将从中构建详细视图。