@kir_cipher

Как выбрать из базы MySQL данные с определенным значением колонки или (при несоответсвии) данные с указанным значением колонки?

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

У меня в базе есть таблица с новостями. Одна из колонок отвечает за язык (lang = 'ru'/'en'/etc). Я хочу сделать запрос, который бы выбирал из базы только английские версии новости или (если переведенная отсутствует) - на русском.
Вот, что есть на данный момент, но работает оно неверно по понятным причинам.
select news.id,news.nid,news.uid,news.show_author,news.title,news.tid,news.html,news.image,news.smallimage,news.views,news.created 
from news 
where lang='en' or (((select count(*) from news where news.nid=news.nid and lang='en') = 0) and (news.lang='ru'));


За ID самой новости отвечает колонка nid (то есть одинаковые новости на разных языках имеют один nid). Помогите, пожалуйста организовать запрос
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kir_cipher Автор вопроса
Тостер - магическая вещь. Пока писал вопрос, придумал ответ. Дал таблице alias и уже через него вытащил nid в подзапрос. Конечный рабочий результат:
select newsData.id,newsData.nid,newsData.uid,newsData.show_author,newsData.title,newsData.tid,newsData.html,newsData.image,newsData.smallimage,newsData.views,newsData.created from news newsData where newsData.lang='en' or (((select count(*) from news where nid=newsData.nid and lang='en') = 0) and (newsData.lang='ru'));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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