-
Всем привет.
Цель запроса, скопировать недостающие строки из таблицы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]убрать джойн, добавить нот экзист или нот ин (селект ...)
-
Вот так попробовал
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 строки одинаковые -
> 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
) -
> выдает все строки по 3 строки одинаковые
> from websites,click_websites
неявное объединение, лучше джойн оставь чем так -
кгшзх © (26.08.15 12:42) [5]select websites.id_website
from websites,click_websites
сказали же убери джойн.
это не слово, это объединение таблиц.
слово убрал, объединение осталось -
Дак как же сделать то, чтобы работало?
попробовал так
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 ....)