50VAJJ
@50VAJJ

Как конвертировать данные одной таблицы?

Привет. Есть три таблицы article(id, title, text), tags(id, alias, name), articleTag. Последняя - это промежуточная таблица. Третья таблица нужна для фильтра по тегам и добавления тегов к статье. В article и tags есть поле id, в articleTag есть поле articleID и tagID. Эти три таблицы связаны.
Так я их фильтрую:
"SELECT * FROM `articleTag` AS aT LEFT JOIN `article` AS a ON(aT.articleID = a.id)
                                WHERE aT.tagID = 1"

Так я получаю все статьи, где есть тег с id=1.
Вопрос: в таблице tags есть ещё поле alias(varchar, имя тега только на английском). Есть ли способ, чтобы не меняя связи сделать поиск не по tagID(в промежуточной таблице) а по alias? Или как-то конвертировать запросом выше из alias в id тега?
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 2
denman1985
@denman1985
SQL, Oracle Forms/Reports dbd
select a.* 
from `article` as a 
         join `articleTag` AS aT ON(aT.articleID = a.id) 
         join `Tags` as t ON (aT.tagID = t.id) 
where t.alias = <условие>


Есть ли способ, чтобы не меняя связи сделать поиск не по tagID(в промежуточной таблице) а по alias? Или как-то конвертировать запросом выше из alias в id тега?

"SELECT * FROM `articleTag` AS aT LEFT JOIN `article` AS a ON(aT.articleID = a.id)
                                WHERE aT.tagID in (select aa.id from `Tags` as aa where aa.alias = <условие>)"
Ответ написан
Комментировать
@heartdevil
плыву как воздушный шарик
Так попробуйте

"SELECT * 
FROM `articleTag` AS aT
INNER JOIN `article` AS a ON(aT.articleID = a.id)
INNER JOIN `tags` AS t ON(aT.tagID = t.id)
WHERE AND t.alias = 'find me'"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы