LINUX.ORG.RU

SQL выборка. затуп.


0

2

Завис на ровном месте. Есть таблица:

| goody_id | prop_id | prop_value_id |

+----------+---------+---------------+

| 924 | 33 | 9 |

| 924 | 32 | 8 |

| 924 | 34 | 13 |

| 924 | 30 | 5 |

| 924 | 31 | 10 |

как из этого сделать:

goody_id | prop_id33 | prop_id32 | prop_id34 | prop_id30 | prop_id3

924 | 9 | 8 | 13 | 5 | 10

?

★★★

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

select (select), (select), (select)...

Можно сделать JOIN'ами таблицу саму на себя (раз 5 в данном случае), но это будет более трудоемко. Считай надо сравнить количество записей в 5 степени.

Хотя многое зависит от индексов еще, но, ИМХО, первый вариант и проще читается и проще расширяется.

BaBL ★★★★★
()

Это выходит за рамки SQL. Какая RDBMS у тебя?

anonymous
()

Id-хи проп ты знаешь заведомо или нужно чтобы было динамично?

anonymous
()

будь в sql агрегатор (подобный встроенным min,max,avg,sum...) fild2line то просто

selest goody_id,fild2line(prop_value_id) from tbl group by goody_id

а вообще твой запрос не реляционный , а какой то @классический@ key-value

тут sql не нужен.

qulinxao ★★☆
()
Ответ на: комментарий от qulinxao

т.е по факту ты после получения обычного

isql -c «select goody_id,prop_id,prop_value_id from tble where goody_id=$some_value$» |«awk слипание строк с....»

qulinxao ★★☆
()

Всем спасибо за внимание :) я сразу и сделал джоинами таблицы к самой себе. Но таблица будет разрастаться, и такой метод будет очень ресурсоёмкий.

СУБД MySQL.

ovax ★★★
() автор топика
Ответ на: комментарий от ovax

Я полагаю тебе стоит пересмотреть структуру хранения данных.

MikeDM ★★★★★
()

В общем, у меня EAV модель данных. Это, конечно, кошмар для SQL. Может есть толковые движки для работы с EAV данными ?

ovax ★★★
() автор топика
Ответ на: комментарий от ovax

Нормальные СУБД опускают проверяют условие выборки перед операцией JOIN, так что от разрастания таблицы ресурсоёмкость не увеличится. Если же у тебя запрос, который делает выборку вообще всей таблицы, то и без JOIN-ов будет тормозить.

kvap
()
Ответ на: комментарий от kvap

индексы на пары (свойство=значение) я ввёл. пока огромного объёма данных нет. я очкую за будущее :) На сколько, по-твоему, MySQL - «нормальная СУБД» ?

ovax ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.