SQL-запрос - список полей - PullRequest
2 голосов
/ 26 октября 2011

Давайте рассмотрим следующую таблицу в качестве игрушечного примера:

id / to / status
1 / Стив, Джимми / 0,2
2 / Джон, Юлия / 1,2
3 / джулия, пегги / 0,1

Я хочу получить строки, в которых "Julia" находится в "to" и где ее соответствующий "status" равен "0".

В этом простом примере это строка n ° 3.

Как мне написать такой запрос на SQL?

P.S. : Я использую SQLite.

1 Ответ

5 голосов
/ 26 октября 2011

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

В общем случае разделенные запятыми строки, подобные этой, не используются в реляционных базах данных и, честно говоря, я бы даже не пытался решить эту проблему в SQL.Если нормализация структуры базы данных не вариант, просто сделайте это в коде.

...