выборка Selectом (без процедуры)

  • Автор темы oleg2009
  • Дата начала
O

oleg2009

#1
Коллеги, подскажите пожалуйста, можно ли сделать следующую выборку SELECTом (без процедуры)

Есть к примеру таблица c 3-мя полями

ad_id
ad_text
ad_lang

В ней есть 2 записи

ad_id, ad_text, ad_lang
1, "text", "en"
1, "текст", "ru"

мне надо выбрать запись с ad_lang=ru но если такой нет (c ad_id = 1 и ad_lang=ru) то вернуть запись с ad_lang=en. Т.е. я хочу показать текст на русском, НО если его нет, то показываем на английском. Наличие хоть одной записи обязательно.

Данный пример можно переписать так что есть таблица и в ней есть только одна запись. Надо проверить если на русском с ad_id = 1 и если нет, то вывесьти на тот что есть

ad_id, ad_text, ad_lang
1, "text", "en"

Я предполагаю что встроенными функциями MySQL это можно сделать, но не имею большого опыта работы с ними и может кто из опытных коллег подскажет как это можно сделать ?
Может быть как-то с функциями COALESCE( IF( ???

Заранее благодарен за помощь уважаемому сообществу ! :(
 

susinmn

Well-known member
16.10.2007
529
3
#2
To oleg2009.
Я сам не работаю с SQL, но вот так можно реализовать в Mysql (sus_sql_1 исходная табличка). Возможно, решение не рациональное, но хоть какое-то :)

select * from sus_sql_1 where ad_lang='ru' and ad_id in (select tmp1.ad_id from sus_sql_1 tmp1 group by tmp1. ad_id having count(*)=2)
union
select * from sus_sql_1 where ad_lang='en' and ad_id in (select tmp1.ad_id from sus_sql_1 tmp1 group by tmp1. ad_id having count(*)=1)