Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Выборка одной и той же строки несколько раз
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Всем доброго времени суток!
Возникла такая необходимость, есть n строк в бд в которых содержится информация о некоторых вещах и их количестве. Необходимо выбрать каждую строку столько раз, сколько содержится в количестве. Т.е. есть строки
id | название | количество
1 | вещь1 | 4
2 | вещь2 | 3
необходимо строку 1 выбрать четыре раза, а строку 2 - три раза, одним запросом, причем количество строк может быть разным в зависимости от условия. Нужно реализовать это на чистом sql без использования php или javascript.
Нужно это чтобы выводилось типа вещь1 1 из 4, вещь1 2 из 4 и тд.
Подскажите направление в котором думать, уже сломал весь мозг себе.
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
[quote=DeepVarvar]
Slavenin пишет:
на чистом sql без использования php или javascript
Покажите как вы на javascript ЭТО делаете!!!
я имею в виду, что выборку строк можно сделать запросом, а обработчик написать в виде цикла на php либо ajax запросом и циклом уже на java
неа, не получается таким запросом
пишет ошибку
Цитата:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) cnt1,tt.*,COUNT(tt.*) cnt2 FROM t_items as t LEFT JOIN t tt WHERE t.i_code = ' at line 1
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
есть такая волшебная программа зовется bartender печатает она этикетки, настройка функции сериализации в ней не позволяет сделать вывод этикеток в нужном формате, зато она умеет работать с базой. поэтому для реализации задачи, необходимо именно размножить вывод нужное количество раз
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Лаконичнее - вряд ли.
Ваше плохо тем, что если надо на чистом SQL, то мы не знаем, сколько заранее раз надо выполнять JOIN. Плюс к тому если повторять надо раз 500, JOIN уже не кажется таким уж отличным решением.
В качестве "классического" SQL-решения мне тоже не удалось найти ничего.
Однако можно использовать SQL-процедуры, которые по сути повторят ту же работу, что была бы проделана в скрипте. Вот то, что сделал я:
SELECT repeats.*FROM`natural`LEFTJOIN repeats ON`natural`.id<=repeats.num WHERE repeats.id ISNOTNULL
Таблица repeats та же.
Стоит отметить, что таблица naturals должна быть заполнена до значения, которое больше максимального числа повторений из таблицы repeats.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Sylver
Отправлено: 02 Февраля, 2016 - 09:51:19
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Февр. 2016
Помог: 0 раз(а)
Тоже озаботился повторением этикеток в Bartender, придумал вот такое решение для размножения этикеток, позволяет вставить на этикетку поле заполняемое для каждой новой записи из БД.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.