gpt4 book ai didi

php - yii - 为按日期排序的每个类型字段选择前五个记录

转载 作者:行者123 更新时间:2023-11-29 01:13:23 25 4
gpt4 key购买 nike

我有一个包含以下字段的表:

Advertisements (
id bigint 20,
name varchar 255,
content text,
creator_id bigint 20,
type_id bigint 255 DEFAULT VALUE IS NULL,
create_date bigint 20
)

我需要按日期排序的每种类型选择前 5 条记录(我需要最新的)。我还想将结果与 CActiveDataProvider 一起使用。除了 sql 查询器(原因:我还需要 Advertisements 类中提供的关系),是否有任何方法可以使用模型函数或 yii 集成函数获取记录?

更新其他表:

Users (
id bigint 20,
login varchar 255,
password varchar 255,
email varchar 255,
date_of_registration bigint 20,
status varchar 255
)
(The table with types)
Items (
id bigint 20,
item varchar 255,
link varchar 255
)
Comments (
id bigint 20,
creator_id bigint 20,
......
topic_id bigint 20
)
Rating (
id bigint 20,
creator_id bigint 20,
......
topic_id bigint 20
)

我想在 create_date 订购的广告中获得每个 type_id 的最新记录,如果一种类型的记录数量超过 5,则只选择最新的 5。我也想要完整的创作者登录+评论数+评分表?我知道这可以通过 SQL 解决,但我不知道如何去做,因为我不擅长 SQL。任何帮助表示赞赏。感谢所有试图提供帮助的人。

最佳答案

在根据 James K. Lowden 的提示进行了一系列谷歌搜索后,我找到了下一个答案:

SELECT t.id,
t.name,
t.content,
i.item,
c.context
FROM (SELECT tbl.id,
tbl.name,
tbl.content,
tbl.owner_id,
tbl type_id,
CASE
WHEN tbl.type_id = @category THEN @rownum := @rownum + 1
ELSE @rownum := 1
END AS num,
@category := tbl.type_id
FROM Advertisements tbl
JOIN (SELECT @rownum := 0, @category := NULL) r
ORDER BY tbl.type_id, tbl.create_date DESC) t
LEFT JOIN Items i ON t.type_id = i.id
LEFT OUTER JOIN Comments c ON c.topic_id = t.id
WHERE t.num <= 5

关于php - yii - 为按日期排序的每个类型字段选择前五个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24859294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com