счас решил проблему получения результата выборки в строку так PHP: $sql_in=mysql_query("select ".$pref."RELATIONS.object from ".$pref."RELATIONS where ".$pref."RELATIONS.properti=".$key." and ".$pref."RELATIONS.val=".$id.""); while ($in = mysql_fetch_array($sql_in)) $ins[] = $in['object']; а потом имплодом в строчку если массив $ins будет на несколько десятков тыс. елементов - возможны тормоза сервера (память и проц.) ? использую вдс от фирстов 400 проц. 256 памяти
как через GROUP_CONCAT(CAST(id AS CHAR) SEPARATOR ',') решить проблему "складывания" результата выборки в строку? group_concat_max_len увеличил до 16М - не помогло
inline где ты там используешь GROUP_CONCAT ? и зачем? точно. проверить негде было. но в любом случае индексы должны помочь
ну например [sql]select GROUP_CONCAT(CAST(MARKET_RELATIONS.object AS CHAR) SEPARATOR ',') from MARKET_RELATIONS[/sql] отображает не все значения MARKET_RELATIONS.object в строке чтобы получить строку из значений выборки
Читал читал... читал читал... там чо, EAV? И нужно выбрать товар с определенными свойствами из EAV? Так это баян. Таблица свойств джойница сама на себя. Или давай схему, объясняй что там что значит, какие данные могут быть и что нужно выбрать.
MiksIr да структура EAV есть таблица relations(object,properti,val) object - код товара properti - код свойства val - код значения свойства нужно выбрать коды товаров, которые одновремено имеют определеные свойства и значения свойств
например relations 1 3 4 2 7 8 3 1 4 1 2 6 нужно выбрать select object where (properti=3 and val=4) and (properti=2 and val=6) (properti=3 and val=4) and (properti=2 and val=6) как правильно записать в запросе? результат object=1
Вообще-то классика такая SELECT t.* FROM tovars t JOIN relations r1 ON (t.id=r1.object AND r1.properti=1) JOIN relations r2 ON (t.id=r2.object AND r2.properti=2) JOIN relations r3 ON (t.id=r3.object AND r3.properti=3) WHERE r1.val=100 AND r2.val=200 AND r3.val=300; но вообще, в голову пришло, если на (object,properti,val) наложена уникальность, то можно собрать условия через OR, типа SELECT object, COUNT(*) as cnt FROM relations WHERE (properti=1 AND val=100) OR (properti=2 AND val=200) OR ... GROUP BY object HAVING cnt=X, где X - количество групп условий соединенных OR. попробуйте оба варианта
MiksIr по проблеме select GROUP_CONCAT(CAST(MARKET_RELATIONS.object AS CHAR) SEPARATOR ',') from MARKET_RELATIONS отображает не все значения MARKET_RELATIONS.object в строке что-то можеш подсказать?