2014-07-06 5 views
0

У меня есть два стола.MySql select Not Work

один стол блюдо

id type 

1 lunch 
2 lunch 
3 dinner 

два user_history стола

ID Meal_id User_id create 

1 2   4  1404638939 

Теперь я хочу, чтобы выбрать все блюда из таблицы один, но есть условию

если таблица два meal_id матч с таблицей Meal ид и создать дату, аналогичную текущей, а затем пропустить эту строку из таблицы 1

Я использую этот код, но не работает правильно

SELECT m.* FROM `meal` AS m LEFT JOIN user_history 
       ON user_history.meal_id != m.id and date(FROM_UNIXTIME(user_history.create))!=CURRENT_DATE() where m.meal_type = 'Lunch' 

ответ

0
SELECT m.* FROM `meal` AS m 
LEFT JOIN user_history 
ON user_history.Meal_id != m.id and date(FROM_UNIXTIME(user_history.create))=CURRENT_DATE() 
where m.type LIKE "%lunch%" 
+0

Использование = не может помочь вам, как вы ищете строку «ланч», следовательно, используйте = когда у вас есть точное совпадение, используйте «% lunch%», когда вы не уверены. –

+0

Также убедитесь, что вы используете имена правых столбцов [Case Sensitive]. –

+0

И жаль бедного индекса – Strawberry

0

Если я правильно понял вопрос, я бы сказал:

SELECT m.* FROM `meal` AS m 
    WHERE m.meal_type = 'Lunch' 
     AND m.id NOT IN (
      SELECT meal_id FROM user_history 
       WHERE date(FROM_UNIXTIME(user_history.create))=CURRENT_DATE() 
     )