2013-04-09 2 views
0

Значения сохраняются в company_id какКак подать заявку ИНЕКЕ снова массив или jscon закодированное значение

["2"] 
["2", "1"] 

где 2 и 1 являются идентификаторами компаний. Теперь я хочу весь результат ID 2. Как я могу запустить запрос повторно json закодированных данных.

select * from tbl where company_id = 2 

Это то, что мне нужно для выполнения.

Для получения дополнительной информации формат json является результатом динамического (заполнение по значениям базы данных). Выберите List в Zend2.

И что, если это был массив вместо json, как этот простой запрос выбора может быть выполнен.

+1

Вы пробовали с подобным? company_id, например, «2%» и «company_id», например «% 2» (используется для обеспечения того, чтобы вы не получили 22), посмотрите на некоторые другие примеры http://www.techonthenet.com/sql/like.php –

+0

Не реляционное хранилище например, это требует некоторых хаков ... Может ли 'WHERE company_id LIKE '%" 2 "%''. – phpisuber01

+0

Вы действительно должны учитывать нормализацию своей базы данных. Это намного проще в долгосрочной перспективе. – bestprogrammerintheworld

ответ

1

В каждом ID это число в двойных кавычках, вы можете просто запросить с LIKE заявлением:

select * from tbl where company_id LIKE '%"2"%' 

А что, если это массив вместо JSON, как этот простой запрос на выборку может быть выполнена.

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

Альтернативой будет создание таблицы, в которой хранятся отношения с компаниями.

1

У MySQL есть тип данных SET Вы можете использовать этот тип данных для этой задачи. Это позволит вам вводить значения, разделенные запятыми, и все еще иметь возможность запрашивать данные по одному элементу.

Руководство: http://dev.mysql.com/doc/refman/5.0/en/set.html

Ваш запрос будет обновляться, чтобы что-то вроде этого:

SELECT * FROM tbl_name WHERE FIND_IN_SET('2', company_id); 

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

Смежные вопросы