【发布时间】:2010-05-02 22:35:49
【问题描述】:
我有一个 sql 数据库。在这个数据库中,我需要查询 3 个表。第一个表包含名为item 的所有项目信息,另外两个表包含名为userComment 的投票和cmets 数据,第三个表包含名为userItem 的投票数据
我目前有一个函数,它使用这个 sql 查询来获取最新的更流行的(就投票和 cmets 而言):
$sql = "SELECT itemID, COUNT(*) AS cnt
FROM (
SELECT `itemID`
FROM `userItem`
WHERE FROM_UNIXTIME( `time` ) >= NOW() - INTERVAL 1 DAY
UNION ALL
SELECT `itemID`
FROM `userComment`
WHERE FROM_UNIXTIME( `time` ) >= NOW() - INTERVAL 1 DAY AND `itemID` > 0
) q
GROUP BY
`itemID`
ORDER BY
cnt DESC";
我知道如何通过单独投票或 cmets 更改此设置....
但是 - 我需要查询数据库以仅返回仅在 item 表中具有特定条件的项目 ID,这些是 WHERE categoryID = 'xx' AND typeID = 'xx'
如果 sql ninja 可以帮我解决这个问题?我是否必须首先返回上述查询的结果以及获取的数组中的每个结果,然后根据item 表检查每个结果,看看它是否符合构建新数组的条件 - 或者这是否矫枉过正?
谢谢, 斯蒂芬
【问题讨论】: