2016-03-06 46 views
3

我有2个表,该Chapter表有很多行与manga_id是Manga只选一个,最大字段行与一对多的关系表

漫画表

ID | NAME  | SLUG 
1 One Piece one-piece 
2 Naruto  naruto 
3 Gintama  gintama 

章表的ID

MANGA_ID | NAME | SLUG    | CREATED_AT 
1   Chap 1 One-Piece-Chap-1 2016/01/01 
1   Chap 2 One-Piece-Chap-2 2016/01/02 
1   Chap 3 One-Piece-Chap-3 2016/01/03 
2   Chap 1 Naruto-Chap-1  2016/01/02 
2   Chap 2 Naruto-Chap-2  2016/01/03 
2   Chap 3 Naruto-Chap-3  2016/01/04 
3   Chap 1 Gintama-Chap-1  2016/01/07 
3   Chap 4 Gintama-Chap-4  2016/01/09 

而我在寻找select只有1个漫画有1个订单通过created_at DESC

例表我在寻找:

Manga_ID | Manga_NAME | NAME | SLUG    | CREATED_AT 
3   Gintama  Chap 4 Gintama-Chap-4  2016/01/09 
2   Naruto  Chap 3 Naruto-Chap-3  2016/01/04 
1   One Piece Chap 3 One-Piece-Chap-3 2016/01/03 

我真的很感激的人回答这个主题和保存我的一天

+0

http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html – Strawberry

+0

你想选择每部漫画的最后一章吗? –

+0

是的,并通过created_at与积极= 1:D感谢帮助 –

回答

1

SELECT mt.id as MANGA_ID, mt.NAME as MANGA_NAME, ct.NAME, ct.SLUG, MAX(ct.CREATED_AT) as CREATED_AT FROM Chapter ct LEFT JOIN Manga mt ON (mt.id = ct.MANGA_ID) GROUP BY ct.MANGA_ID

这应该做的伎俩。

+1

你保存我的一天,非常感谢你 –

+0

你好Vasil,你能帮我添加Where Clause mt.active = 1和ct.active = 1,当我在group by name之前加上这个close并且slug不是最新的但是日期是真的。这是结果: Manga_ID | Manga_NAME | NAME | SLUG | CREATED_AT 3银魂第1章魂-CHAP-1 2016年1月9日 2鸣第1章鸣-CHAP-1 2016年1月4日 1海贼王插1 One-Piece-Chap-1 2016/01/03 –

+0

你的新问题不清楚 –

1
SELECT t1.MANGA_ID, t2.NAME AS Manga_NAME,t1.NAME,t1.slug,t1.CREATED_AT 
FROM Chapter t1 
INNER JOIN Manga t2 ON t1.MANGA_ID = t2.ID 
WHERE t1.CREATED_AT = (SELECT MAX(CREATED_AT) from Chapter t3 where t3.MANGA_ID = t1.MANGA_ID) 
+1

谢谢,但我得到了一个504超时查询 –

+0

你可以请添加索引在'MANGA_ID'和'CREATED_AT'在章表 –

+1

我alrd索引:( –

相关问题