Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) 1 [2]  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Есть ли такое поле?, Есть ли такое поле?
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Да ради Бога. Я высказал скромное ИМХО просто. Вот потребуется найти два значения, что тогда? А три? А исключение? А диапазон? Впрочем TC скорее всего уверен, что не потребуется.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
redreem  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4284
Пользователь №: 29002
На форуме: 5 лет, 11 месяцев, 25 дней
Карма: 147




Цитата (twin @ 20.01.2017 - 16:08)
Да ради Бога. Я высказал скромное ИМХО просто. Вот потребуется найти два значения, что тогда? А три? А исключение? А диапазон? Впрочем TC скорее всего уверен, что не потребуется.

да, если нужен поиск, то не самое лучшее решение, я сталкивался с таким решением, где поиск был не нужен. просто выборка по этим значением. например какой-нибудь blacklist для записей.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dimadima965  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 58
Пользователь №: 43614
На форуме: 8 месяцев, 7 дней
Карма:




depp
Дак вот второй таблицы хотелось бы избежать)))
А вот если надо вытащить несколько значений, и сделать это надо динамически?
т.е.:
id = 55,65,73....?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dimadima965  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 58
Пользователь №: 43614
На форуме: 8 месяцев, 7 дней
Карма:




twin
Сначала написал, потом увидел сообщение.
Поддерживаю вопрос.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 16116
Пользователь №: 6543
На форуме: 8 лет, 9 месяцев, 22 дня
Карма: 304

Трезвый :
6 лет, 7 месяцев, 1 день


Две таблицы. Связь "многие ко многим".


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 15395
Пользователь №: 4190
На форуме: 9 лет, 5 месяцев, 20 дней
Карма: 470




Цитата (Dimadima965 @ 20.01.2017 - 07:23)
Можно ли как то средствами mysql извлечь строки...

Если очень хочется хранить данные не в нормализованном виде, то возьми PostgreSQL и используй поле типа "массив". Там есть все необходимые инструменты для поиска значений.
В Постгре есть поддержка всего, что есть в Мускуле, а также много чего другого.
Если же очень хочется "париться" с Мускулем, то делай нормализованные данные.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1788
Пользователь №: 20757
На форуме: 7 лет, 5 месяцев, 23 дня
Карма: 187




Dimadima965, как уже заметили выше, задача, скорее всего, возникла по причине непонимания как пользоваться базой данных. И стоит ранить идентификаторы в специальной таблице связей а не в поле через разделитель. Тем не менее было уже предложено несколько решений, подкину и я. :)
Воспользуемся функцией SUBSTRING_INDEX для решения . Так же понадобится последовательность чисел, чтобы "разбить" записи на строки, которые содержат лишь по одному id из ids. В качестве последовательности можно использовать специально созданную таблицу, с нужным количеством строк или же запрос вида:
SELECT 1 AS `n`
UNION SELECT 2 AS `n`
UNION SELECT 3 AS `n`

Последовательность должна содержать записей не меньше, чем идентификаторов в самой длинной строке ids.
В итоге из всего выше сказанного получим запрос вида:
SELECT 
DISTINCT
`items`.*
FROM (
SELECT 1 AS `n`
UNION SELECT 2 AS `n`
UNION SELECT 3 AS `n`
UNION SELECT 4 AS `n`
UNION SELECT 5 AS `n`
UNION SELECT 6 AS `n`
UNION SELECT 7 AS `n`
) AS `sequence`
INNER JOIN `items` ON CHAR_LENGTH(`items`.`ids`)-CHAR_LENGTH(REPLACE(`items`.`ids`, ',', ''))>=`sequence`.`n`-1
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(`items`.`ids`, ',', `sequence`.`n`), ',', -1) = 55

DISTINCT здесь нужен чтобы исключить повторяющиеся записи в результате, которые могут возникнуть в случае поиска по нескольким id. Чтобы искать по нескольким id, where будет таким:
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(`items`.`ids`, ',', `sequence`.`n`), ',', -1) IN (1, 10, 55)

Демка: http://sqlfiddle.com/#!9/3acbd5/1
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dimadima965  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 58
Пользователь №: 43614
На форуме: 8 месяцев, 7 дней
Карма:




kaww
Спасибо за развернутый ответ.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 392
Пользователь №: 40589
На форуме: 2 года, 7 месяцев, 22 дня
Карма: 22




Цитата (redreem @ 20.01.2017 - 14:49)
twin
depp
данная денормализация довольно широко применяется и имеет право на жизнь.

имеет право на жизнь только в том случае, когда нам необходимо получить весь набор идов для записи. если же осуществляется поиск по этому полю - то только вторая таблица связей.
я не против денормализации - это нормально. но не в данном случае.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) 1 [2]  Ответ в темуСоздание новой темыСоздание опроса