2013-07-31 2 views
0

Так что в основном я пытаюсь выбрать 5 случайных строк из таблицы category_event, а затем сопоставить fk_event_id из таблицы category_event с идентификатором из таблицы событий и, наконец, заказать 5 случайных rows by start_time из таблицы событий.MySQL: проблема, связанная с двумя таблицами

У меня есть 25 строк в таблице category_event с 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 похоже, что у него должно быть ограничение внешнего ключа на столбец «id» событий, это правильно? (потому что симптомы, которые вы описываете, могут «несколько строк без соответствия событиям») –

+0

Можете ли вы предоставить структуру таблицы и данные выборки –

ответ

0

Оказывается, я имел строки в category_event, которые имели fk_event_id, которые были указывающие на не существующий строки в событиях.

Все хорошо сейчас :)

+0

db не волшебство, которое вы знаете ... вызов его fk_ не превращает его в внешний ключ;) –

+0

I означает ... вы должны добавить ограничение внешнего ключа, чтобы предотвратить его повторение –

Смежные вопросы