2010-09-03 5 views
3

Я использую функции написания отчетов в приложении для создания ярлыков продуктов штрих-кода.Создание повторяющихся ответов в запросе MySQL SELECT

Система записи отчетов позволяет мне использовать оператор MySQL SELECT для получения необходимой мне информации из нашей базы данных и представления ее в JSXML-файл Jasper Reports, который форматирует отчет.

Это прекрасно работает, если я хочу создать одну метку штрих-кода для каждого продукта, возвращаемого из базы данных, с помощью инструкции SELECT. Однако я хочу создать пятьдесят экземпляров каждого ярлыка продукта.

Прост достаточно, если бы у меня был доступ к коду, но все, что я могу изменить, - это оператор SQL.

Может ли кто-нибудь предложить способ, которым я могу заставить оператор SELECT MySQL возвращать 50 одинаковых результатов для каждой записи, которую он находит в таблице продуктов?

Спасибо за любую помощь.

+0

Хммм. .. Никто не приходит в голову, хотя я уверен, что есть один (гуру mySQL разобратся). Однако это было бы лучше сделать на уровне приложения. Вы на 100% уверены, что нет собственного способа сделать это в отчетах Jasper или самом приложении? –

ответ

1

Я просто некрасивое решение, если вы можете изменить схему: создать фиктивную таблицу, содержащую 50 записей и присоединиться к ней в вашей SQL запросах, как это: выберите * из продуктов, dummyWith50Records

Я почти постыдный написать что-то подобное, но он должен работать ... Надеюсь, у кого-то есть лучшее решение.

+0

У меня нет доступа к приложению, но возможно создание фиктивной таблицы. Существует механизм передачи параметров в оператор SQL, поэтому я надеялся, что сможет указать количество меток и вставить его в инструкцию SQL. Однако манекен-стол будет работать, поэтому я пойду с этим, если у кого-то нет других идей. Спасибо за помощь. – Charlie

+0

Не уверен, почему я получил голосом здесь. Я все еще не вижу лучшего решения. – Damien

+0

Это не уродливое решение. Использование вспомогательной таблицы, содержащей только цифры, является очень удобным способом решения множества проблем с запросами. См. Обсуждение здесь: http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-numbers-table.html –

1

Крест объединяется с таблицей «на лету» с информацией об удалении с таким количеством строк, сколько вы хотите дублировать.

SELECT t.* 
FROM table t 
JOIN (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) dud 
WHERE t.field = 'condition' 

В этом случае, я получаю 5 дубликатов каждой отборочной строки в table.

Это некрасиво, но это работает, и это не требует создания таблицы real.

0

Я могу понять вашу проблему ... Но было бы более полезным для меня примером ...

Я думаю, что я делал то же самое в одном из моего приложения