我有以下表格:
表:新闻
字段:uid,标题,类别,日期时间,隐藏,已删除
表:categories_mn
字段:uid_local,uid_foreign
表:类别
字段:uid,parentcategory,name,image
每个新闻条目都可以分配到几个不同的类别。
我想要获得的是获取最新的3条新闻,并显示此条目所分配的所有类别的图像(并分配了图像)
这样的事情:
title | catimages |
------------------------------
Post 7 | cat1.jpg |
Post 6 | |
Post 5 | cat1.jpg,cat3.jpg |
------------------------------
到目前为止,这就是我的全部内容:
SELECT title, categories
FROM news
WHERE deleted = 0 AND hidden = 0 AND
ORDER BY datetime DESC
LIMIT 3;
我对SQL不太熟悉。请帮忙。
答案 0 :(得分:0)
select b.title, b.categories, a.image from categories a
inner join news b
on a.uid=b.uid
WHERE b.deleted = 0 and b.hidden = 0
order by a.datetime desc
limit 3;
答案 1 :(得分:0)
我认为您不需要新闻表中的类别列。 我认为这个查询应该有效:
SELECT
news.title,
categories.image
FROM
news
INNER JOIN categories_mn ON news.uid=categories.uid_local
INNER JOIN categories ON categories.uid=categories_mn.uid_foreign
WHERE
news.hidden=0 AND news.deleted=0
ORDER BY
datetime DESC
LIMIT 3
我还要重命名categories_mn中的列,以便更清楚哪个列引用哪个表。也许uid_news
和uid_categories
是好名字,也有助于更好地理解m:n关系......