while循环中的query如何簡化?

发布于 2022-09-03 15:06:20 字数 1581 浏览 16 评论 0

我在這裡貼完整的語法 煩請各位mysql大師鑑定

$gettimeline = mysql_query("SELECT * FROM `timeline`
LEFT JOIN `users_profile` USING (id)
ORDER BY `addtime_timeline`  DESC
");

以上是找timeline資料表並以addtime_timeline排列

while ($row=mysql_fetch_array($gettimeline)){ 
印出timeline的欄位資料
}

以上是印出timeline資料的循环

在循环中我會加入query 如下

while ($row=mysql_fetch_array($gettimeline)){ 

$GETthumb1 = mysql_query("SELECT * FROM `timeline_thumb`
WHERE `id` = '".$_SESSION['userid']."'
AND `by_timeline_id` = '".$row['timeline_id']."'
AND `thumb_type` = '1'
");

$pub_GETthumb1 = mysql_query("SELECT * FROM `timeline_thumb`
WHERE `by_timeline_id` = '".$row['timeline_id']."'
AND `thumb_type` = '1'
");

$pub_GETinfo = mysql_query("SELECT * FROM `timeline_thumb`
JOIN `users_profile` USING (id)
WHERE  `by_timeline_id` = '".$row['timeline_id']."'
ORDER BY `addtime_thumb` DESC
");

$get_comment = mysql_query("SELECT * FROM `timeline_comment`
JOIN `users_profile` USING (id)
WHERE `re_timeline_id` = '".$row['timeline_id']."' 
ORDER BY `addtime_comment` DESC ");

$get_comment_num = mysql_query("SELECT * FROM `timeline_comment`
WHERE `re_timeline_id` = '".$row['timeline_id']."'
");

}

GETthumb1是找timeline_thumb資料表中與timeline(timeline_id)相符的id(by_timeline_id)有幾筆(抓出用戶自身有幾筆)。
pub_GETthumb1則是總共有幾筆。
pub_GETinfo是抓出用戶的資料與users_profile (id)對應。
get_comment是抓出timeline_comment資料表中與timeline(timeline_id)相符的id(re_timeline_id)有幾筆並抓出用戶的資料與users_profile (id)對應。
get_comment_num是抓出總共有幾筆。

有將mysql查詢簡化的空間嗎?........

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初心 2022-09-10 15:06:20

所述幾筆是要最終的結果數量還是沒條記錄.

問題所描述的查詢使用 sql 查詢 看起來分別應該是這樣的

select * from timeline as tl
left join timeline_thumb as tt on tl.timeline_id=tt.by_timeline_id
where id=? and tt.thumb_type='1'


select * from timeline as tl
left join timeline_thumb as tt on tl.timeline_id=tt.by_timeline_id
where tt.thumb_type='1'


select * from timeline as tl
left join timeline_thumb as tt on tl.timeline_id=tt.by_timeline_id
left join users_profile as up on tt.id=up.id
order by tt.addtime_thumb desc


select * from timeline as tl
left join timeline_comment as tc on tl.timeline_id=tc.re_timeline_id
left join users_profile as up on tc.id=up.id
order by tc.addtime_comment desc


select * from timeline as tl
left join timeline_comment as tc on tl.timeline_id=tc.re_timeline_id

這每條語句實際中也有很多重疊的, 也可以再次剝離出來, 不建議先查出來在 while 遍歷繼續查詢, 這樣造成的 IO 開銷很大.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文