- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть две таблицы - таблица users с полем ID
и таблица profi с полем userid
Как запросом к базе вывести все записи таблицы profi в которых userid такой - какого НЕТ в поле ID таблицы users.
т.е. userid.profi НЕ РАВНО id.users (в таблице users вообще не записей с таким ID - вот их мне и нужно найти)
и сразу второй вопрос, когда я проверю что селект работает правильно, как теперь переписать запрос, чтобы у этих записей очистить поле userid?
Dram, вот такая картинка как раз для вас
Были бы там пояснения, а пока я вижу что во всех случаях таблицы пересекаются, а мой случай где?
Dram,
SELECT *
FROM profi
RIGHT JOIN users
ON profi .userid = users .id
WHERE users.id IS NULL
silicoid, только наоборот left loin
SELECT profi.* FROM profi LEFT JOIN users ON profi.userid = users.id WHERE users.id IS NULL
;15569516']silicoid, только наоборот left loin
SELECT profi.* FROM profi LEFT JOIN users ON profi.userid = users.id WHERE users.id IS NULL
RIGHT JOIN не нашел ничего
LEFT JOIN просто вывел все записи таблицы профи
RIGHT JOIN не нашел ничего
LEFT JOIN просто вывел все записи таблицы профи
И они есть в таблице users (с соответствующими userid=ID) ?
Мне как раз и нужно найти записи в таблице профи в которых есть ТАКОЙ userid КАКОГО ID НЕТ в таблице юзерс
Так вот я и спрашиваю: Этот запрос выбирает какие-то записи, которые есть в обеих таблицах?
Я спрашиваю это, потому что в условии чётко написано: WHERE users.id IS NULL
И если запрос выбирает из users какие-то записи с id, отличным от NULL, то ваш MySQL явно нездоров.
Постараюсь объяснить еще раз.
Есть таблица юзерс, в ней поле айди.
Есть таблица профи, в которую при регистрации попадают определнная группа юзеров, и она связана с таблицей юзерс через поле userid.
userid - это по сути id таблицы юзерс.
За годы работы сайта скопилось много ошибочных регистраций и сейчас есть много записей в таблице профи, в которых прописаны userid а таких ID в таблице юзерс уже давно нет!!!
Вот мне и нужно найти эти записи в таблице профи и почистить у этих записей поле userid
P.S. может это важно - но поле userid таблицы профи по умолчанию = 0
Постараюсь объяснить еще раз.
Есть таблица юзерс, в ней поле айди.
Есть таблица профи, в которую при регистрации попадают определнная группа юзеров, и она связана с таблицей юзерс через поле userid.
userid - это по сути id таблицы юзерс.
За годы работы сайта скопилось много ошибочных регистраций и сейчас есть много записей в таблице профи, в которых прописаны userid а таких ID в таблице юзерс уже давно нет!!!
Вот мне и нужно найти эти записи в таблице профи и почистить у этих записей поле userid
P.S. может это важно - но поле userid таблицы профи по умолчанию = 0
Тупо влоб:
"SELECT * from profi WHERE userid not in (select id from users)"
Ну и так же для апдейта:
"UPDATE profi set userid = 0 where userid not in (select id from users)"