2013-07-31 58 views
0

所以基本上我想要做的是从category_event表中选择5个随机行,然后将category_event表中的fk_event_id与来自events表的id相匹配,最后命令5个随机来自事件表的start_time中的行。MySQL:加入两个表的问题

我有category_event表中有25行fk_category_id = 2,但是当我运行查询有时它返回5行,下次4行,下次5行,下次3行等。它应该是5每次...

这是我目前有:

SELECT * FROM 
(
    SELECT fk_event_id 
    FROM category_event 
    WHERE fk_category_id=2 AND status = 'enabled' 
    ORDER BY RAND() LIMIT 5 
) c 
INNER JOIN events e 
ON e.id = c.fk_event_id 
ORDER BY e.start_time; 

任何帮助是极大的赞赏:)

+2

请从表格中显示一些数据。也许你无意中限制了WHERE子句中的结果或INNER JOIN中的结果。 – Anton

+0

fk_event_id看起来应该对事件'i​​d'列有一个外键约束,这是否正确? (因为你描述的症状仿佛'有些行没有匹配事件') –

+0

你能否提供表结构和样本数据 –

回答

0

原来我在category_event行,包括那个被指向不存在的fk_event_id的行中的事件。

现在一切都很好:)

+0

db不是你知道的魔法...调用它fk_不会使它成为外键; –

+0

我意思是......你应该添加一个外键约束来防止它再次发生 –