4

我有以下表格:

:新闻
字段:uid、title、categories、datetime、hidden、deleted

:categories_mn
字段:uid_local、uid_foreign

:类别
字段:uid、父类别、名称、图像

每个新闻条目都可以分配到几个不同的类别。

我想要实现的是获取最新的 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 不是很有经验。请帮忙。

4

2 回答 2

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;
于 2013-03-11T17:49:41.667 回答
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 关系......

于 2013-09-02T17:38:44.673 回答