Конференция "Базы" » Запрос в MySQL [D7, MySQL]
 
  • lewka © (26.08.15 12:03) [0]
    Всем привет.
    Цель запроса, скопировать недостающие строки из таблицы
    websites


    в таблицу
    click_websites


    Мой запрос

    select w.id_website, w.url_website from websites w
    left join click_websites cw on w.id_website<>cw.id_site
    where cw.id_user=44



    выдает строки из таблицы
    websites

    ,и каждую повторяет столько раз, сколько строк в таблице
    click_websites


    Помогите, пожалуйста, справить запрос, чтобы он выдавал только те строки, которых нет в таблице
    click_websites

  • кгшзх © (26.08.15 12:25) [1]
    убрать джойн, добавить нот экзист или нот ин (селект ...)
  • lewka © (26.08.15 12:36) [2]
    Вот так попробовал

    select websites.id_website
    from websites,click_websites
    where click_websites.id_site not in (select click_websites.id_site from click_websites where id_user=44)

    но ни чего не получилось

    выдает все строки по 3 строки одинаковые
  • sniknik © (26.08.15 12:39) [3]
    > left join
    присоединяет к "левой" (тут websites) подходящее по условию...
    что написал то получил.
    для четкого сравнения inner join... хотя тут тоже возможны дубли (есть дубли в значениях "с одной стороны")

    > выдавал только те строки, которых нет в таблицеclick_websites
    примерно так (если inner  не поможет, хотя там можно и select distinct w.id_website, w.url_website прописать)
    select id_website, url_website
    from websites
    where id_website NOT IN (
     select id_site from click_websites where id_user=44
    )
  • sniknik © (26.08.15 12:41) [4]
    > выдает все строки по 3 строки одинаковые
    > from websites,click_websites
    неявное объединение, лучше джойн оставь чем так
  • кгшзх © (26.08.15 12:42) [5]
    select websites.id_website
    from websites,click_websites

    сказали же убери джойн.
    это не слово, это объединение таблиц.
    слово убрал, объединение осталось
  • lewka © (26.08.15 13:54) [6]
    Дак как же сделать то, чтобы работало?
    попробовал так

    SELECT id_website
    FROM websites
    INNER JOIN click_websites ON click_websites.id_site <> websites.id_website
    where click_websites.id_user=44

    все выдает дубли
  • кгшзх © (26.08.15 14:40) [7]
    еще раз.

    1. убери джойн. в селекте только websites
    2. добавь условие в котором websites.id_website not in (select click_websites.id_site from click_websites where ....)
 
Конференция "Базы" » Запрос в MySQL [D7, MySQL]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]