За последние 24 часа нас посетили 18497 программистов и 1604 робота. Сейчас ищет 931 программист ...

Вывод данных на основе сравнивания таблиц

Тема в разделе "MySQL", создана пользователем ftalazol, 9 апр 2014.

  1. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Есть две таблицы, нужно выводить данные из 1 таблицы, но если id из первой таблицы присутствует во второй таблице то эту запись нужно пропустить.

    Есть база данных заданий, пользователь выполняет это задание, и оно уже не будет ему показываться, но остальные должны его видеть.

    INSERT INTO `like` (`likeid`, `elementid`, `autorid`, `type`) VALUES
    (3, 3190, '574357', 'wall'),
    (4, 3190, '574357', 'wall'),
    (5, 325483702, '574357', 'photo'),
    (6, 168202680, '-67922047', 'video'),
    (7, 168202680, '-67922047', 'video'),
    (8, 168202680, '-67922047', 'video');

    INSERT INTO `like_ok` (`like_id`, `user_id`) VALUES
    (0, 0),
    (3, 574357),
    (5, 574357);

    Запрос должен делать выводить данные таблицы like , но если like.likeid нету в таблице like_ok столбце like_id
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Это приказ? =)
     
  3. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Просьба о помощи )
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а в чем затык? а если переформулировать условие?

    нужно выбрать все, кроме тех, что есть во второй
    или
    нужно выбрать тех, кого нет во второй
     
  5. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Нужно выбрать из первой таблице те задания которых нет во второй таблице, likeid и like_id это номера заданий, если задание попало в таблицу like_ok то его уже показывать ненужно . Может есть более правильные варианты , но я придумал только такой.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты пока ничего не придумал. давай, роди запросик-то.
     
  7. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Я незнаю как делать такие сложные запросы , раньше делал только простые, максимум это рандомная выборка из бд каторая успешно накрыла бд нагрузкой. Если бы знал не спрашивал, а по поводу как делается я придумал только теоритическую часть, это записывать готовые задания в таблицу и вписывать туда ид задания и ид юзера, дальше делать выборку по двум таблицам, но запрос на практике не представляю как сделать.

    Добавлено спустя 51 минуту 26 секунд:
    SELECT * FROM like
    LEFT OUTER JOIN like_ok
    ON like.likeid = like_ok.like_id
    WHERE like_ok.user_id IS null

    Так прокатит?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А ты попробуй. Только про кавычки не забывай.
     
  9. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Получилось , я гений, повторения урезаны.

    likeid elementid autorid type like_id user_id
    4 3190 574357 wall NULL NULL
    5 -----
    6 -----
    7 -----
    8 -----

    А ненужные поля like_id user_id с значением null нужно убирать как то или так должно быть.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Эксперимент дает понимание :)

    Ну ты можешь добавить в условие что выбирать если NOT NULL или указать, какие поля выбирать, если не все нужны
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    А сказать спасибо учителю))
     
  12. ftalazol

    ftalazol Новичок

    С нами с:
    9 апр 2014
    Сообщения:
    6
    Симпатии:
    0
    Я поставил лайк
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    а где тут лайки ставить?