根据用户的兴趣显示出版物

nimxete2  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(213)

我想根据用户的兴趣(关键字)显示出版物。
用户表

id | username
5  | joelsilva

出版物表

id | publication title
8  | The best car of the year!

权益表

id | username | interest
8  | joelsilva | car
9  | joelsilva | year

它在主页上显示所有带有汽车标题和年份的出版物。
我试过这个:

$pubs = mysql_query(
    "SELECT * 
      FROM PUBLICATIONS 
      WHERE (interest LIKE '%".$interests."%')
      ORDER BY id desc"
) or die(mysql_error());

它是有效的,但只对表中的一种类型感兴趣。如果加上一个以上的兴趣表示没有什么。

des4xlb0

des4xlb01#

在包含兴趣的标题上加入出版物和兴趣,得到出版物的不同行。为用户筛选。

SELECT DISTINCT
       p.*
       FROM publications p
            INNER JOIN interests i
                       ON p.title LIKE concat('%', i.interest, '%')
       WHERE username = ?
       ORDER BY p.id DESC;

(顺便说一句:他们的id应该在兴趣表中,而不是用户名。您应该看看这里,了解为什么在构建查询时不应该使用字符串连接,而应该使用参数化查询。)

相关问题