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

Тема в разделе "SQL", создана пользователем oleg2009, 22 апр 2009.

  1. oleg2009

    oleg2009 Гость

    Коллеги, подскажите пожалуйста, можно ли сделать следующую выборку 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( ???

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

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    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)
     
Загрузка...

Поделиться этой страницей