Как из БД вынуть нужные данные, если поле такое?

P
На сайте с 06.01.2009
Offline
601
554

Приветствую Гуру msql.

Есть БД (таблица).

700 строк с наименованиями товаров.

Среди столбцов в одном из столбцов (razmery) прописаны размеры материалов, например, запись имеет такой вид

5*10, 7*7, 10*10, 20*20, 33*103, 55*55, 55*100, 55*110, 55*120, 99*99, 8*8

у каждого материала прописаны свои размеры

Задача выдернуть из таблицы товары с размерами от 1 до 10 включительно!

Т.е. 5*10, 7*7, 10*10 и 8*8 в данном случае только они подходят.

Прошу помочь и подсказать алго...

Я про $result = mysql_query(

ps. Пока кроме варианта тупо добавить в массив все данные (при этом добавлять в строку размеров пробел вначале и запятую в конце и потом циклом проверять
от $x=1 до 11 не придумал.
типа так


for ($x=1; $x<11; $x++) {
$strokaplus = substr_count($razmery," $x*");
$strokaplus2 = substr_count($razmery,"*$x ");
$strokaplus3 = substr_count($razmery,"*$x;");
if($razmeryes===1 and ($strokaplus===1 or $strokaplus2===1 or $strokaplus3===1)) {$tochtonado[] = $file;
}

Может есть поинтереснее вариант у вас, спасибо.
IL
На сайте с 20.04.2007
Offline
435
#1

Вообще, "по фэн-шую" примерно так:

разобрать все размеры, в отдельную таблицу (к примеру product_sizes) чтобы на каждый размер приходилась одна строка:

id_product, x, y

SELECT DISTINCT id_product FROM product_sizes 

WHERE (x BETWEEN 1 AND 10)
AND (y BETWEEN 1 AND 10)

При необходимости - JOIN-ить с таблицей товаров по тем же условиям

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
P
На сайте с 06.01.2009
Offline
601
#2

ivan-lev, ведь размер 10*10 и 110*200 бывает, и при поиске в таблице размера с числом 10 - попадет и 110*200. Речь об этом.

Размер это x*y

Или нужно даже ширину и высоту разнести по разным колонкам? Тогда да, но помоему ещё сложнее, чем планирую сделать на текущий момент (по крайней мере для меня сложнее).

IL
На сайте с 20.04.2007
Offline
435
#3
postavkin:
ivan-lev, ведь размер 10*10 и 110*200 бывает, и при поиске в таблице размера с числом 10 - попадет и 110*200. Речь об этом.

эм.. читать предыдущее сообщение ещё раз. x*y

---------- Добавлено 30.07.2012 в 14:50 ----------

postavkin:
Или нужно даже ширину и высоту разнести по разным колонкам? Тогда да, но помоему ещё сложнее, чем планирую сделать на текущий момент (по крайней мере для меня сложнее).

Я же не написал, что решение самое лёгкое.. И не написал, что оно единственно правильное.. Это примерный вариант более правильной с точки зрения БД реализации.. В любом случае, решать Вам.. Если проще всё делать в PHP - не запрещается ведь.

p.s. А разбить строку на x*y можно регулярками.. примерно так.

// строка в $text

preg_match_all ('/(\d+)\*(\d+)/',$text,$matches);
print_r ($matches);
P
На сайте с 06.01.2009
Offline
601
#4

потерто, сорри.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий