我有一个 mySQL 数据库表,其中包含以下列:
物品
- item_id
- 姓名
- 大小(例如,以字节为单位)
- 描述
- 日期
还有另一个表,它与第一个表有 1:* 关系,其中包含描述第一个表中的字段表示的项目的“关键字”:
Item_Keyword
- item_id
- 关键词
我使用 PHP 从 Item 表中“选择 *”,然后遍历返回的行(使用带有 fetch_assoc() 的 while 循环)来构建一个包含所有数据的 HTML 表。
在 while 循环的每次迭代中,我对 Item_Keyword 表中与 Item 表中当前元组的 id 匹配的所有关键字执行另一个查询,然后将它们添加到表中的列中,连接在一起:
$res = getItems();
if ($res)
{
while ($row = $res->fetch_assoc())
{
...
$itemID = $row['item_id];
$res2 = getKeywords($itemID);
if ($res2)
{
$keywords = "";
while ($row2 = $res2->fetch_assoc())
{
if (strlen($keywords) > 0)
$keywords .= ", ";
$keywords .= $row2['keyword'];
}
$text .= "<td> " . $keywords . " </td>";
}
}
}
所以我最终得到了一个看起来像这样的表:
ID Name Size Description Date Keywords
0 Widget 1024 Widget one 010101 widget,one,item
我正在尝试使 HTML 表格列可排序。我可以设想如何在我对 Item 表的查询中使用 ORDER BY。问题是,由于关键字存储在单独的表中并通过独立查询检索,我只能 ORDER BY 一组查询结果或另一组,但不能同时排序 - 更简洁的是,我看不到任何排序方式按关键字列中的值。
是否有某种我可以构造的深奥查询允许我为一个项目选择关键字,并将这些包含在 Item 表上查询的“FROM”参数中?就像是:
SELECT item_id, name, size, description, date (SELECT keyword FROM Item_Keyword WHERE item_id = 0)
FROM Item
WHERE item_id = 0