当前位置: 首页 > 知识库问答 >
问题:

php+mysql关于读取用户收藏内容的问题?

周祺
2023-06-21

网站有个用户收藏的功能,举例有3个数据表

数据表一:favorites(收藏数据)

id type(1为商品,2为文章) cid(文章或商品的id) dateline(收藏日期)

数据表二:goods(商品)
id title

数据表二:articles(文章)
id title

我想先
select * from favorites order by dateline desc
然后通过取得的cid来读取收藏的文章或商品的标题

取标题我认为有2种方法,一种是foreach循环,cid,每一条循环读一次数据库

if($type==1){

select * from goods where id = $value['cid'];

}

另一种方法是读取出来的cid分别放到对应的商品或文章2个数组里,
然后再通过
select * from goods where id in($array_goods);
select * from articles where id in($array_goods);
我觉得第二种方法比第一种方法会高一点,但是用第二种方法我不懂两个数据表(goods, articles)读出来的标题组合起来要怎么按照favorites里的的dateline倒序来排序呢?
望高手指点一下,谢谢各位大佬。

共有1个答案

咸承教
2023-06-21

联表,然后取出的时候用 IF 处理一下,如果 type 多了的话,就得用 case then

SELECT IF(goods.id IS NULL, articles.title, goods.title), favorites.*
FROM favorites
LEFT JOIN goods
    ON goods.id = favorites.cid AND favorites.type = 1
LEFT JOIN articles
    ON articles.id = favorites.cid AND favorites.type = 2
ORDER BY dateline DESC

不过如果单次要查询的数据量不是很大的话,还是比较倾向于第二种方式。

 类似资料:
  • 问题内容: 当我从带有403响应的URL获取数据时 它抛出IOException,我无法获取响应数据。 但是当我使用firefox并直接访问该URL时,ResponseCode仍然是403,但是我可以获取html内容 问题答案: 根据javadocs,该方法将返回,可用于从错误条件(例如404)中检索数据。

  • 问题内容: 请我想一个非常简单的方法来从我的android应用程序读取我的php页面的内容!我不需要jSon之类的东西,我想要的就是让php页面的内容在Java中成为String!预先谢谢你! 问题答案: HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse res

  • 收藏一个回答 取消收藏一个回答 回答收藏列表 收藏一个回答 POST /api/v2/user/question-answer/collections/:answer 响应 Header 201 Created { "message": [ "操作成功" ] } 取消收藏一个回答 DELETE /api/v2/user/question-answer/collections/:

  • 问题内容: 我正在使用jsoup抓取一些HTML数据,效果很好。现在,我需要提取一些JSON内容(仅JSON,而不是HTML)。我可以使用jsoup轻松做到这一点,还是必须使用另一种方法来做到这一点?jsoup执行的解析是对JSON数据进行编码,因此无法使用Gson正确解析。 谢谢! 问题答案: 虽然很棒,但Jsoup是HTML解析器,而不是JSON解析器,因此在这种情况下它没有用。如果您尝试过,

  • 主要内容:从 MySQL 数据库读取数据,使用 MySQLi,实例 (MySQLi - 面向对象),实例 (MySQLi - 面向过程),使用 PDO (+ 预处理),实例 (PDO)从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: 我们可以使用 * 号来读取所有数据表中的字段: 如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程。 使用 MySQLi 以下实例中我们从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastn

  • 问题内容: 有一个库可以导出文件,但是我想捕获文件的内容。我想将一个作者传递到库中,并能够读取该作家写到文件中的内容。最终,我想扩充该库以跳过编写此文件的过程。io.Copy或io.Pipe是否可能? 库代码创建一个* File并将此句柄用作io.Writer。我尝试使用io.Copy,但只读取了0个字节。 问题答案: 如果要在写入字节时捕获字节,请使用带有的a 作为第二个写入器。 或在写入时在s