Подскажите по выборке из базы

rexted
Дата: 16.01.2013 22:25:13
Есть таблица такого вида:

поля: id, model_id, name, value
id - ключ autoincrement

у меня на входе есть значение model_id тип:целое

ему в таблице соответствуют несколько записей с разными заранее известными значениями name

например - name == 'text' , name=='image', name =='big_image'

Вопрос: можно ли одним запросом к базе выбрать сразу все необходимые записи с нужными значениями name и одним и тем же model_id и вернуть их во внятном виде? Т.е. получить на выходе массив вида: $x['text'] => ' sdfsdfs', $x['image'] => 'dfskjhksdhjk' и.т.д.

Или надо делать просто выборку всех записей с нужным model_id и дальше обрабатывать их уже в PHP в поисках нужных name???
tanglir
Дата: 17.01.2013 05:19:23
rexted,

select ... from table
where model_id=:model_id and name in (:name1,:name2,...,:nameN)
rexted
Дата: 23.01.2013 03:19:30
Спасибо, но такой запрос выдает поля в перемешку и потом не разобрать из какое к какому. Я пытаюсь понять можно ли получить ассоциативный массив на выходе.

Т.е., например, запрос такой:

SELECT value FROM catalog_data WHERE model_id =2 AND name IN ( 'image', 'minimage', 'text')

дает мне на выходе массив value[0] = '...', value[1]='...', value[2]='...' ? при этом я не могу узнать кто из них 'image' а кто 'text'

Можно ли сделать запрос, где на выходе будет value['image'] = '....', value['text']='....' и.т.п. ?????


Параллельно возник еще один вопрос:

Можно ли получить результат SELECTA вложенного как строку???
т.е. например мне надо чтобы часть имени поля таблицы получалась как результат вложенного SELECTA:

SELECT CONCAT('column', SELECT('11')) AS value FROM table WHERE 1 -- это не работает. А как то так можно сделать???
tanglir
Дата: 23.01.2013 05:39:26
rexted, курите динамический скл, другого не дано.
javajdbc
Дата: 23.01.2013 07:36:29
rexted,

обычно библиотеки доступа к базе имеют
нужный вам функционал -- выдать ассоциативный массив.
Попробуйте почитайте доки драйвера.