Отрицание в INNER JOIN

167
15 декабря 2016, 15:49

Нужно чтобы из tasks не показывались те материалы, id которых записан в tasks_done.

SELECT ...
FROM `tasks` 
 INNER JOIN `users` ON tasks.tfrom = users.uid 
 INNER JOIN `tasks_done` ON tasks.tid != tasks_done.tdtid 
ORDER BY tasks.tamount DESC LIMIT 10

С самим запросом всё нормально. Но вот ON tasks.tid != tasks_done.tdtid не хочет срабатывать.

  • Структура таблицы tasks -

  • Структура таблицы users -

    - Структура таблицы tasks_done -

Answer 1

Не смотрели в сторону LEFT (RIGHT) OUTER JOIN?

UPD*#1*: Попробуйте такой запрос:

SELECT * 
  FROM tasks 
  INNER JOIN users ON tasks.tfrom = users.uid 
  LEFT OUTER JOIN tasks_done ON tasks.tid = tasks_done.tdtid 
  WHERE tasks_done.tdtid is null
Answer 2

Кому интересно, поколдовал с LEFT OUTER JOIN и всё прекрасно стало работать:

  SELECT ... 
   FROM `tasks`
    LEFT OUTER JOIN `users` ON tasks.tfrom = users.uid
    LEFT OUTER JOIN `tasks_done` ON tasks.tid = tasks_done.tdtid 
   WHERE tasks_done.tdtid is null 
   ORDER BY tasks.tamount DESC LIMIT 10

А ответ @Rams666 помечаю как правильный, так как помог с направлением.

@alexlz, тебе тоже спасибо большое за помощь. Напиши что-то в виде ответа, я поставлю палец вверх, чтобы к тебе карма начислилась :)

READ ALSO
Проблемы с if-else

Проблемы с if-else

Берется id, происходит парсинг, данные записываются, читаются, но если я опять ввожу тот же id, то опять происходит парсинг, а не вывод информации...

150
Проблема с PDO

Проблема с PDO

Здравствуйте, написал маленькую обёртку PDO

237
Подсчет количества дней

Подсчет количества дней

После регистрации пользователю записывается в базу данных (поле date_reg тип DATE) дата регистрации, вот как подсчитать и вывести количество дней...

150
Пустое окно браузера при выводе таблицы из бд MySQL

Пустое окно браузера при выводе таблицы из бд MySQL

Всем добрый день! Ребята,помогите ошибку найти в коде:

166