#mysql
#mysql
Вопрос:
У меня есть user
amp; user_code
таблица, имеющая отношение «один ко многим». Пожалуйста, ознакомьтесь со структурой таблицы ниже.
Пользовательская таблица
id email username date
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
679 test@test.com sathis 4/20/2019 9:04
680 test@test.com ram 4/20/2019 9:04
680 test@test.com ram 4/20/2019 9:04
680 test@test.com ram 4/20/2019 9:04
681 test@test.com Steve 4/20/2019 9:04
681 test@test.com Steve 4/20/2019 9:04
681 test@test.com Steve 4/20/2019 9:04
681 test@test.com Steve 4/20/2019 9:04
681 test@test.com Steve 4/20/2019 9:04
Таблица User_Code
user_id code
679 J039
679 J080
679 J320
679 J54L
679 K31P
679 L05C
679 T030
679 V150
680 J039
680 J080
680 J320
681 ABC12
681 CD123
681 opo123
681 qw123
681 ieu12
если я даю username
(из таблицы user), то он должен проверять code
(из таблицы user_code), и тот же код должен проверять, представлен ли он для какой-либо другой user_id
(из таблицы user_code), и должен возвращать это user_id
также.
например.
id username
679 sathis
680 ram
из приведенной выше таблицы, если я получу sathis
в качестве входных данных. я должен получить ram
в качестве выходных результатов.
Потому что Sathis's
код также представлен для Ram
также.
Пожалуйста, найдите мой вложенный запрос sql ниже
select id,username from users
where
id in (
select user_id from user_code
where
code in (
select code from user_code
where user_id = ( select id from user where username = 'sathis')))
Как я могу упростить этот запрос более эффективно,
Ответ №1:
для повышения производительности вы могли бы избежать предложения IN и использовать inner join в подзапросе
select id, username
from users
inner join (
select distinct user_id
from User_Code
inner join (
select code
from User_Code
inner join User ON User_Code.user_id = user.id
where username = 'sathis'
) t on t.code = User_Code.code
) t2 on t2.user_id = users.id
Комментарии:
1. это не проверка с помощью
code
из таблицы user_code., это просто печать толькоSathis's
записи. это также должно привестиRam
.2. покажите мне ошибку .. .. ответ обновлен. удаление неправильного. (точка)
3. Запрос работает., но он не дает
Ram's
записи., он должен принести. потому что обаSathis
amp;Ram
имеют одинаковыйcode
вuser_code
таблице.4. ` пользователь внутреннего соединения С кодом.user_id = user.id ` в этой строке code.user_id — код является объектом таблицы
user_code
?