@UserTypical3

Как вытащить значение из бд по 2 элементу?

Всем привет!
У меня есть бд, которое состоит из двух столбов (member, date)
Моя цель заключается в том, чтобы в ячейку из столба date внести два числа, что вроде 10, 18
И чтобы при запросе date = 18 выводилась эта ячейка, а то получается только при запросе 10, 18 выводится нужная ячейка.
sqlite3
Спасибо за помощь!
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Sqlite не имеет такого типа как массив, поэтому и запросить по определённому элементу массива нельзя. Поэтому вариантов два - не использовать sqlite или хранить даты в отдельной таблице, связанной через внешний ключ с текущей
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@mshuribitov
А зачем 10 если нужно вывести 18? И если вы записали 10,18 то значение такое и будет, или же попробуйте использовать функцию .split в переменную и вывести нужные индексы.
Ответ написан
@rPman
sql базы данных определяют массив - как таблицу т.е. нужен массив - делай связанную таблицу
table (id,member)
dates (table_id, date)
с созданным foreign key индексом dates.table_id -> table.id

соответственно когда запрашиваешь данные из table, то объединяй их с dates с помощью join (в зависимости от задачи left/right/inner join)

select distinct table.id, table.member from table left join dates on table.id-dates.table_id where dates.date=18
вернет одну записи из table если у них есть связанные dates со значением 18
distinct убирает дубликаты (так как left join выдает умножение таблиц, дублируя данные table для каждой новой записи dates)

p.s. когда то давно, там где говнокодить можно, я хранил массивы, сериализовав их тексте через разделитель ';', добавив его даже для первого элемента (т.е. ';18;19'), тогда запросив select * from table where dates like '%;18%' можно получить то что тебе нужно, но это очень неэффективно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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