2010-09-03 6 views
3

J'utilise la fonctionnalité d'écriture de rapport dans une application pour générer des étiquettes de produits de codes à barres. Le système d'écriture de rapport me permet d'utiliser une instruction MySQL SELECT pour obtenir les informations dont j'ai besoin de notre base de données et de les présenter dans un fichier JRXML Jasper Reports qui formate le rapport.Génération de réponses en double dans une requête MySQL SELECT

Cela fonctionne très bien si je veux produire une étiquette de code-barres pour chaque produit renvoyé à partir de la base de données par mon instruction SELECT. Cependant, je veux produire cinquante copies de chaque étiquette de produit. Assez facile si j'avais accès au code, mais tout ce que je peux changer est l'instruction SQL.

Quelqu'un peut-il suggérer une façon d'obtenir une instruction MySQL SELECT pour renvoyer 50 résultats identiques pour chaque enregistrement trouvé dans la table des produits?

Merci pour toute aide.

+0

Hmmmm. .. Ca ne me vient pas à l'esprit, bien que je sois sûr qu'il y en a un (les gourous mySQL le régleront). Cependant, ce serait plus agréable à faire au niveau de l'application. Êtes-vous sûr à 100% qu'il n'y a pas de façon native de le faire dans Jasper Reports, ou l'application elle-même? –

Répondre

1

J'ai juste une solution laide, supposant que vous pouvez modifier le schéma: créer une table factice contenant 50 enregistrements et rejoindre dans vos requêtes SQL comme ceci: select * from produits, dummyWith50Records

Je suis presque honteux écrire quelque chose comme ça, mais ça devrait marcher ... J'espère que quelqu'un a une meilleure solution.

+0

Je n'ai pas accès à l'application, mais créer une table fictive est possible. Il y a un mécanisme pour passer des paramètres à l'instruction SQL donc j'espérais pouvoir spécifier le nombre d'étiquettes et l'incorporer dans l'instruction SQL. Cependant, la table fictive fonctionnera donc je vais y aller à moins que quelqu'un ait d'autres idées. Merci de votre aide. – Charlie

+0

Je ne sais pas pourquoi j'ai reçu un vote négatif ici. Je ne vois toujours pas de meilleure solution. – Damien

+0

Ce n'est pas une solution laide. Utiliser une table auxiliaire avec rien d'autre que des nombres est un moyen très pratique de résoudre de nombreux problèmes de requêtes. Voir la discussion ici: http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-numbers-table.html –

1

Jointure croisée sur une table d'informations à la volée avec autant de lignes que vous souhaitez de doublons.

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' 

Dans ce cas, que je reçois 5 doubles de chaque ligne de qualification en table.

Ce n'est pas joli, mais cela fonctionne, et il ne nécessite pas la création d'une table réelle.

0

Je suis en mesure de comprendre votre problème ... Mais il serait plus utile pour moi un exemple ...

Je pense que je faisais la même chose dans l'une de ma demande

Questions connexes