Сравнение ID и userid

12
D
На сайте с 28.06.2008
Offline
1101
606

Есть две таблицы - таблица users с полем ID

и таблица profi с полем userid

Как запросом к базе вывести все записи таблицы profi в которых userid такой - какого НЕТ в поле ID таблицы users.

т.е. userid.profi НЕ РАВНО id.users (в таблице users вообще не записей с таким ID - вот их мне и нужно найти)

и сразу второй вопрос, когда я проверю что селект работает правильно, как теперь переписать запрос, чтобы у этих записей очистить поле userid?

S
На сайте с 13.10.2014
Offline
171
#1

Dram, вот такая картинка как раз для вас

D
На сайте с 28.06.2008
Offline
1101
#2

Были бы там пояснения, а пока я вижу что во всех случаях таблицы пересекаются, а мой случай где?

S
На сайте с 13.10.2014
Offline
171
#3

Dram,

SELECT *

FROM profi

RIGHT JOIN users

ON profi .userid = users .id

WHERE users.id IS NULL

[umka]
На сайте с 25.05.2008
Offline
456
#4

silicoid, только наоборот left loin

SELECT profi.* FROM profi LEFT JOIN users ON profi.userid = users.id WHERE users.id IS NULL

Лог в помощь!
D
На сайте с 28.06.2008
Offline
1101
#5
'[umka:
;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 просто вывел все записи таблицы профи

[umka]
На сайте с 25.05.2008
Offline
456
#6
Dram:
RIGHT JOIN не нашел ничего
LEFT JOIN просто вывел все записи таблицы профи

И они есть в таблице users (с соответствующими userid=ID) ?

D
На сайте с 28.06.2008
Offline
1101
#7

Мне как раз и нужно найти записи в таблице профи в которых есть ТАКОЙ userid КАКОГО ID НЕТ в таблице юзерс

[umka]
На сайте с 25.05.2008
Offline
456
#8

Так вот я и спрашиваю: Этот запрос выбирает какие-то записи, которые есть в обеих таблицах?

Я спрашиваю это, потому что в условии чётко написано: WHERE users.id IS NULL

И если запрос выбирает из users какие-то записи с id, отличным от NULL, то ваш MySQL явно нездоров.

D
На сайте с 28.06.2008
Offline
1101
#9

Постараюсь объяснить еще раз.

Есть таблица юзерс, в ней поле айди.

Есть таблица профи, в которую при регистрации попадают определнная группа юзеров, и она связана с таблицей юзерс через поле userid.

userid - это по сути id таблицы юзерс.

За годы работы сайта скопилось много ошибочных регистраций и сейчас есть много записей в таблице профи, в которых прописаны userid а таких ID в таблице юзерс уже давно нет!!!

Вот мне и нужно найти эти записи в таблице профи и почистить у этих записей поле userid

P.S. может это важно - но поле userid таблицы профи по умолчанию = 0

NothingMatters
На сайте с 12.06.2017
Offline
45
#10
Dram:
Постараюсь объяснить еще раз.
Есть таблица юзерс, в ней поле айди.
Есть таблица профи, в которую при регистрации попадают определнная группа юзеров, и она связана с таблицей юзерс через поле 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)"

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий