powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить проблему с метками (тегами) статей
7 сообщений из 7, страница 1 из 1
Помогите решить проблему с метками (тегами) статей
    #39186476
Есть таблица с метками статей
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
| article_id   |  tag_id  |
|      1       |     7    |
|      1       |     8    |
|      1       |     9    |
|      2       |     7    |
|      2       |     8    |
|      3       |     8    |
|      3       |     6    |

Задача такая: нужно получить все метки (tag_id), которые есть у статей с выбранной меткой.

Т.е. я выбрал метку 7. Она есть у статей 1 и 2. Нужно получить метки 8 и 9, которые тоже есть у этих статей, но не метку 6, потому что она в статье 3, а ей не присвоена метка 7.

Это можно сделать одним запросом? Хожу вокруг конструкции HAVING, но чего-то не догоняю.
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39186532
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в лоб построчно то пробовали?

Код: sql
1.
2.
3.
SELECT tag_id FROM My_table WHERE article_id IN
/* получаем статьи в которых соответствующий таг*/
(SELECT t1.article_id FROM My_table as t1 WHERE t1.tag_id = ???) 
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39186548
Alex_Ustinov,

Мне подзапросы боязно использовать. Я стараюсь без джоинов и подзапросов делать. Я читал, что подзапросы могут выполняться не один раз, а для каждой обрабатываемой строки, как захотят, что создаёт нереальную нагрузку на мускуль. Есть какая-то гарантия, что этот подзапрос выполнится ровно один раз?
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39186766
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
SELECT OWN.tag_id 
FROM 
  My_table as OWN, 
  (SELECT * FROM My_table WHERE tag_id = ???) as SEC
WHERE OWN.article_id = SEC.article_id


когда найдете вариант без подзапросов или джойнов - поделитесь пожалуйста......................
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39186876
Alex_Ustinov,

Во-первых, двумя запросами с обработкой питоном посередине.
Во-вторых, созданием ещё одной "избыточной" таблицы tag_id | tag_id.

Оба варианта, надеюсь, по понятным причинам мне не очень нравятся. Это крайние случаи, если придётся оптимизировать систему.

Я в SQL не большой специалист, поэтому спросил, может, я какой-то конструкции или хитрости не знаю. Спасибо, пока сделаю подзапросом.
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39186946
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну эти варианты не относятся же к СКЛ.......
вы просили одним запросом, в СКЛ это никак не влезет
...
Рейтинг: 0 / 0
Помогите решить проблему с метками (тегами) статей
    #39187041
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юра РимскийAlex_Ustinov,
Мне подзапросы боязно использовать. Я стараюсь без джоинов и подзапросов делать. Я читал, что подзапросы могут выполняться не один раз, а для каждой обрабатываемой строки, как захотят, что создаёт нереальную нагрузку на мускуль. Есть какая-то гарантия, что этот подзапрос выполнится ровно один раз?


Что за детский сад ... "боязно", "где-то прочитал", "как захотят".

Надо просто брать и смотреть конкретный запрос. Смотреть план (EXPLAIN) и всё прекрасно станет видно, что сколько раз выполняется). В данном конкретном случае при наличии индексов по обоим полям - ничего базе не сделается.
И подзапрос естественно выполнится один раз.

Любая реляционная база данных (MySQL не исключение) специально заточена для оптимального выполнения различных операций над данными, включая всякие подзапросы и джойны. Сколько у вас всего статей? Тысяча, что тысяч, миллион?
Да у вас питон быстрее просядет по памяти, чем базе потребуются какие-то дополнительные оптимизации (типа денормализации) чтобы прожевать такой же объем.
Гонять огромные выборки в питон и обратно, чтобы ВМЕСТО базы, самому сделать джоин - это, извините, больше на секс с резиновой женщиной похоже.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить проблему с метками (тегами) статей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]