• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

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( ???

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

susinmn

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)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!