2013-07-31 60 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

我意思是......你應該添加一個外鍵約束來防止它再次發生 –