我制作了一个搜索引擎,其中页面访问者可以根据4种不同的属性搜索音乐艺术家,艺术家的评级为0-100,并输入指定属性的最小值,访问者可以查看评级大于或等于所需值的艺术家列表。在查询之后,我已经设置了fetch数组和foreach语句,但是我遇到了查询问题。
我尝试过以下查询语句。这是一个有凝聚力的陈述:
SELECT users.username, databaseimage.profile
// users.username is artists username
// databaseimage is table where profile pic is stored
FROM users
JOIN databaseimage ON users.id = databaseimage.user_id
JOIN attributes ON users.id = attributes.userid
// user.id, database.user_id, and attribute.userid all correspond to the id of a specified artist
// attributes is table where attributes are stored
上面的内容为我提供了所需的所有数据。下面是我需要帮助的部分。我想缩小数据范围,以便只有与属性等级(astr)大于$ selectnumber(访问者指定的数字)的艺术家对应的数据在结果数组。这就是我的尝试。
WHERE attribute.userid
HAVING COUNT() IN (
SELECT userid, ($attribute DIV TotalRatingEntries) as attr
FROM attributes
WHERE attr >= '$selectnumber'
)
答案 0 :(得分:0)
据我了解数据结构,我可以提出以下查询:
SELECT
users.username,
databaseimage.profile
FROM
users
JOIN databaseimage ON users.id = databaseimage.user_id
JOIN attributes ON users.id = attributes.userid
WHERE
attribute.userid IN
(
SELECT
userid
FROM
attributes
group by
userid,TotalRatingEntries
having
sum(attribute)/TotalRatingEntries >= '$selectnumber'
)
请提供有关这3张桌子的更多详情,或许我误解了一些事情。