Quelqu'un peut-il me montrer l'équivalent MySQL de la déclaration suivante (qui fonctionne dans Oracle 10g)?Oracle à la syntaxe MySQL
INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT a.a1, b.ID, b.DENOMINATION FROM (SELECT rownum a1
FROM dual
CONNECT BY rownum <= 10000000) a, BOOK b
WHERE a.a1 BETWEEN b.START_NUMBER AND b.START_NUMBER + b.UNITS - 1;
Fondamentalement, ce que cela fait est pour chaque entrée dans la table BOOK
, il fait des entrées dans la table VOUCHER
. Le nombre d'entrées dans le tableau VOUCHER
est déterminé par le nombre de UNITS
dans la ligne correspondante du tableau BOOK
. Je peux fournir plus d'informations si cela n'est pas clair.
Je ne le vois pas comme un kludge terrible. L'adhésion à une grande table est une pratique standard pour faire pivoter des ensembles relationnels de données. –
Et l'utilisation de l'incrémentation automatique ne fonctionnerait pas ... les numéros de pièces justificatives ne sont garantis que d'être incrémentés dans un livre, mais les livres n'ont pas besoin d'être séquentiels. – Elie
@Nick: peut-être pas un kludge terrible, mais néanmoins; dans quel environnement est-ce utilisé pour pivoter plutôt que la méthode cas/décodage? http://stackoverflow.com/questions/365238/advice-using-pivot-table-in-oracle – Alkini