#php #mysql #sql
#php #mysql #sql
Вопрос:
Я получил следующую структуру:
admin_id || country_id
---------------------------------
1 2
5 1
1 2
2 3
5 62
1 1
3 62
Как получить все значения, взяв $_SESSION['admin']['id']
, найдя country_id этого администратора и получив все остальные admin_id и country_id, которые совпадают с администратором сеанса?
Итак, допустим, что текущий зарегистрированный администратор имеет id
= 5 , это означает, что admin_id: 5 имеет два country_id: 1 и 62 . Я хочу взять все строки, которые имеют country_id: 1 и 62.
Он должен вернуть это:
admin_id || country_id
------------------------
5 1
5 62
1 1
3 62
Как я могу сделать это в одном sql-запросе?
Ответ №1:
Вы можете использовать where
предложение для фильтрации по admin_id
country_id
:
select t.*
from t
where t.admin_id = 5 or
t.country_id in (select t2.country_id from t t2 where t2.admin_id = 5);
Комментарии:
1.
t.admin_id = 5
является избыточным — все строки соответствуют этому условию соответствует второму условию.
Ответ №2:
SELECT t1.*
FROM table t1
JOIN table t2 USING (country_id)
WHERE t2.admin_id = 5
Комментарии:
1. К какой таблице вы присоединяетесь? У меня есть только один
2. @ssssss Одна таблица. Две его копии.
3. вы присоединяетесь к таблице, которая не существует. Это не копия
4. Пожалуйста, рассмотрите возможность добавления объяснения к вашему ответу