IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

création d'une table


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut création d'une table
    Bonjour a tous,

    Je suis débutant avec Interbase et j'ai un problème avec création d'une table.
    Est-il possible de créer une table, qui regroupe toutes les combinaisons possibles
    du Loto? (5/49, donc 1 906 884 enrg)
    Avec Paradox c'est facile, mais il se plant facilement avec plusieurs millions enreg.
    Voici la table que je veut créer:

    Id A B C D E
    1 1 2 3 4 5
    . . . . . .
    1906884 45 46 47 48 49

    Merci d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    oui pas de probleme
    create database ...
    create table ...
    insert into ...

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 634
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par makowski Voir le message
    oui pas de probleme
    create database ...
    create table ...
    insert into ...
    je trouve que là , tu fais fort

    ne serait-ce point le moment de nous démontrer la force des requêtes récursives ?

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    je trouve que là , tu fais fort

    ne serait-ce point le moment de nous démontrer la force des requêtes récursives ?
    Recursion Limit

    Currently the recursion depth is limited to a hard-coded value of 1024.

    donc je pense que la limite est dépassée non ?


    sinon cela ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    WITH RECURSIVE 
      T (CH) AS 
      ( 
        SELECT '1' FROM RDB$DATABASE UNION ALL 
        SELECT '2' FROM RDB$DATABASE UNION ALL 
        SELECT '3' FROM RDB$DATABASE UNION ALL 
        SELECT '4' FROM RDB$DATABASE UNION ALL 
        SELECT '5' FROM RDB$DATABASE UNION ALL 
        SELECT '6' FROM RDB$DATABASE UNION ALL 
        SELECT '7' FROM RDB$DATABASE UNION ALL 
        SELECT '8' FROM RDB$DATABASE UNION ALL 
        SELECT '9' FROM RDB$DATABASE 
      ), 
      COMBINATIONS AS 
      ( 
        SELECT CAST(CH AS VARCHAR(5)) COMB FROM T 
        UNION ALL 
        SELECT C.COMB || T.CH 
          FROM COMBINATIONS C JOIN T 
            ON T.CH > SUBSTRING(C.COMB FROM CHAR_LENGTH(C.COMB) FOR 1) 
         WHERE CHAR_LENGTH(C.COMB) < 5 
      ) 
    SELECT * FROM COMBINATIONS
    WHERE CHAR_LENGTH(COMB)=5 
    ORDER BY COMB

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    à vérifier j'ai fais ça vite fait mais :
    avec une procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    SET TERM ^ ;
     
    RECREATE PROCEDURE loto 
    RETURNS 
     ( b1 smallint, b2 smallint, b3 smallint, b4 smallint, b5 smallint )
    AS 
    DECLARE VARIABLE nb_boules smallint = 49; 
    BEGIN
      b1=1;
      b5=5;
      WHILE (b1<=nb_boules-4) DO 
      BEGIN
       b2=b1+1;
       WHILE (b2<nb_boules-3) DO 
       BEGIN
        b3=b2+1;
        WHILE (b3<nb_boules-2) DO 
        BEGIN
         b4=b3+1;
         WHILE (b4<nb_boules-1) DO 
         BEGIN
          b5=b4+1;
          WHILE (b5<nb_boules) DO 
          BEGIN
           SUSPEND;
            b5=b5+1;    
          END               
          SUSPEND;
          b4=b4+1;    
         END           
         SUSPEND;
         b3=b3+1;    
        END     
        SUSPEND;
        b2=b2+1;    
       END   
       SUSPEND;
       b1=b1+1;
      END
     
    END^
     
    SET TERM ; ^
    puis :
    voilà, même pas besoin de table

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    et sinon voici la création de la table et son remplissage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    CREATE TABLE LOTO (b1 smallint, b2 smallint, b3 smallint, b4 smallint, b5 smallint);
    COMMIT;
     
    SET TERM ^ ;
     
    EXECUTE BLOCK  
    AS 
    DECLARE VARIABLE nb_boules smallint = 49; 
    DECLARE VARIABLE b1 smallint = 1;
    DECLARE VARIABLE b2 smallint;
    DECLARE VARIABLE b3 smallint;
    DECLARE VARIABLE b4 smallint;
    DECLARE VARIABLE b5 smallint;
    BEGIN
      WHILE (b1<=nb_boules-4) DO 
      BEGIN
       b2=b1+1;
       WHILE (b2<nb_boules-3) DO 
       BEGIN
        b3=b2+1;
        WHILE (b3<nb_boules-2) DO 
        BEGIN
         b4=b3+1;
         WHILE (b4<nb_boules-1) DO 
         BEGIN
          b5=b4+1;
          WHILE (b5<nb_boules) DO 
          BEGIN
           INSERT INTO LOTO (b1,b2,b3,b4,b5) VALUES (:b1,:b2,:b3,:b4,:b5);
            b5=b5+1;    
          END               
          INSERT INTO LOTO (b1,b2,b3,b4,b5) VALUES (:b1,:b2,:b3,:b4,:b5);
          b4=b4+1;    
         END           
         INSERT INTO LOTO (b1,b2,b3,b4,b5) VALUES (:b1,:b2,:b3,:b4,:b5);
         b3=b3+1;    
        END     
        INSERT INTO LOTO (b1,b2,b3,b4,b5) VALUES (:b1,:b2,:b3,:b4,:b5);
        b2=b2+1;    
       END   
       INSERT INTO LOTO (b1,b2,b3,b4,b5) VALUES (:b1,:b2,:b3,:b4,:b5);
       b1=b1+1;
      END
     
    END^
     
    SET TERM ; ^
    COMMIT;

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut merci
    Citation Envoyé par makowski Voir le message
    à vérifier j'ai fais ça vite fait mais :
    avec une procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    SET TERM ^ ;
     
    RECREATE PROCEDURE loto 
    RETURNS 
     ( b1 smallint, b2 smallint, b3 smallint, b4 smallint, b5 smallint )
    AS 
    DECLARE VARIABLE nb_boules smallint = 49; 
    BEGIN
      b1=1;
      b5=5;
      WHILE (b1<=nb_boules-4) DO 
      BEGIN
       b2=b1+1;
       WHILE (b2<nb_boules-3) DO 
       BEGIN
        b3=b2+1;
        WHILE (b3<nb_boules-2) DO 
        BEGIN
         b4=b3+1;
         WHILE (b4<nb_boules-1) DO 
         BEGIN
          b5=b4+1;
          WHILE (b5<nb_boules) DO 
          BEGIN
           SUSPEND;
            b5=b5+1;    
          END               
          SUSPEND;
          b4=b4+1;    
         END           
         SUSPEND;
         b3=b3+1;    
        END     
        SUSPEND;
        b2=b2+1;    
       END   
       SUSPEND;
       b1=b1+1;
      END
     
    END^
     
    SET TERM ; ^
    puis :
    voilà, même pas besoin de table
    Merci beaucoup, maintenant j'ai un problème avec alter database,
    pour ajouter les fichiers a ma base, car 4Go c'est fini !

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 634
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par makowski Voir le message
    Recursion Limit

    Currently the recursion depth is limited to a hard-coded value of 1024.

    donc je pense que la limite est dépassée non ?
    Ah , je n'avais pas pensé à ça
    tu n'en parlais pas dans ton excellent article (Linux mag 111 que j'ai eu beaucoup de mal a avoir )
    il faut dire que j'etais nettement plus intéressé par les CTE que par des générations de combinaisons tres souvent demandé dans des PME

  9. #9
    Membre Expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Ah , je n'avais pas pensé à ça
    tu n'en parlais pas dans ton excellent article (Linux mag 111 que j'ai eu beaucoup de mal a avoir )
    si :
    Attention tout de même avec ce type de requête, il existe une limite à la recursivité, le nombre de cycles de récursion est limité à 1024.

Discussions similaires

  1. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 10h54
  2. Question sur la création d'une table
    Par air dans le forum Oracle
    Réponses: 4
    Dernier message: 23/10/2005, 12h46
  3. Réponses: 4
    Dernier message: 19/10/2005, 11h26
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. INTERBASE Création d'une table
    Par Corben dans le forum InterBase
    Réponses: 2
    Dernier message: 19/06/2004, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo