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

Delphi Discussion :

Base de données Keno


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut Base de données Keno
    Bonjour
    J'ai une base de donnée Keno avec les 20 numéros tirage midi et soir
    et je voudrais savoir comment je peux faire pour trouver dans cette base
    les 4 numéros les plus sortis dans chaque tirage par ordre.
    Ma table est Dbase.
    Merci pour une idée !

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    DBASE c'est pas du récent
    Sans nous fournir de description de la table c'est encore moins aisé, j'imagine qu'il s'agit d'une sorte de matrice genre N1,...,N20 avec une clé date:heure ?

    si c'est plus un truc plus "atomisé" de type date,heure,numero ce serait trop facile avec une simple requête encore que, avec DBASE cela demanderait certainement deux passes selon mes souvenirs de Paradox
    1 - SELECT NUMERO,COUNT(*) AS C FROM TIRAGE // sauvé dans un fichier .sql i.e classement.sql
    2 - SELECT NUMERO,C FROM classement.SQL ORDER BY C
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour et merci

    j'ai déjà une fonction qui me dit si les 4 chiffres que j'ai rentré sont
    sorti en meme temps mais moi je voudrais savoir combien de série de 4 chiffres sont sorti en meme temps
    sans avoir a rentrer une série
    pour la base oui tu a raison j'ai la date heure midi ou soir la série des 20 boules tirer et le gain

    pour l'instant j'ai fait une procedure qui me tire aléatoirement 4 boules que je passe sur la base et me ressorte le nombre de fois sortie

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour

    je pensais faire sa
    premier tirage si 4 chiffres
    1234
    1235
    1236
    ect.. jusqu’à 70
    après
    2345
    2346
    ect..
    et a chaque fois je teste si les 4 chiffres sont sortie

    ++

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    cette méthode me semble très longue !
    Je vous propose d'utiliser des requêtes (query)
    pour créer la table vous pouvez par exemple faire ceci
    (R1)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT JOUR,HEURE,NUMERO1 AS NUMERO FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,NUMERO2 FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,NUMERO3 FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,NUMERO4 FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,NUMERO5 FROM KENO.DBF
    ... // je pense que vous avez compris le principe ;)               
    UNION 
    SELECT JOUR,HEURE,NUMERO20 FROM KENO.DBF
    Enregistrez ce SQL (dument complet) dans le même endroits que votre table par exemple sous numeros.SQL

    Ceci vous donnera tous les numéros tirés
    Entre parenthèses si vous réduisez par une clause WHERE l'ensemble des résultats à un tirage vous obtenez la même chose que votre fonction de tri des numéros tirés d'un tirage

    Ensuite une nouvelle requête
    (R2)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT NUMERO,COUNT(*) AS C FROM numeros.SQL
    ORDER BY C,NUMERO
    Idem enregistrez la requête par exemple en nombredefois.sql
    N.B. vous remarquerez que, après test (test avec le programme module base de données DBD32.exe de D7) j'ai fusionné (et corrigé) les deux précédents SQL proposés

    Vous n'aurez alors qu'à ouvrir dans le programme la "table" nombredefois.sql et extraire le nombre d'enregistrements que vous souhaitez vous aurez alors les numéros les plus sortis
    Bien évidemment mon jeu d'essai ne se contentait que de deux tirages mais le principe est posé et les SGBD "modernes" seraient plus rapides

    Pour une séquence de 4 chiffres au sein d'un tirage c'est bien sûr beaucoup plus complexe ! Surtout si les numéros ne sont pas en ordre

    Ils seraient en ordre la solution serait
    (R1)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT JOUR,HEURE,CAST(NUMERO1 AS CHAR(2))+CAST(NUMERO2 AS CHAR(2))+CAST(NUMERO3 AS CHAR(2))+CAST(NUMERO4 AS CHAR(2)) AS COMBINAISON FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,CAST(NUMERO2 AS CHAR(2))+CAST(NUMERO3 AS CHAR(2))+CAST(NUMERO4 AS CHAR(2))CAST(NUMERO5 AS CHAR(2)) AS COMBINAISON FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,CAST(NUMERO3 AS CHAR(2))+CAST(NUMERO4 AS CHAR(2))+CAST(NUMERO5 AS CHAR(2))CAST(NUMERO6 AS CHAR(2)) AS COMBINAISON FROM KENO.DBF
    .....
    Sauf que les unités posent un souci, exemple : si j'ai les valeurs 4,6,12,45 COMBINAISON aura la valeur 461245 alors qu'il faudrait 04061245 et là j'ai bien l'impression que ce n'est pas possible avec le peu que propose le LocalSQL de Borland, une solution 4_6_1245 est possible mais la requête s'alourdit !
    (R1)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(NUMERO1 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO2 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO3 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO4 AS CHAR(2)+'_' FROM 1 FOR 2)   AS COMBINAISON
    FROM KENO.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(NUMERO2 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO3 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO4 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(NUMERO5 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO.DBF
    UNION
    ...
    Cela commence à faire beaucoup mais admettons (toujours à sauvegarder dans un fichier SQL)

    (R2) deviendrait
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COMBI,COUNT(*) AS C FROM numeros.SQL
    ORDER BY COMBI,NUMERO

    Avec sélection de la combinaison cela permettrait de répondre à la question combien de fois est sortie telle <combinaison> (cette valeur respectant le principe exposé plus haut les unités sont suivies d'un espace)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COMBI,COUNT(*) AS C FROM numeros.SQL
    WHERE COMBI='<combinaison>'
    ORDER BY COMBI,NUMERO

    dans le programme un TQuery aura donc la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Query1.Active:=False;
    Query1.SQL.Text:='SELECT COMBI,COUNT(*) AS C FROM numeros.SQL  ORDER BY COMBI,NUMERO'
    Query1.Active:=True;
    For i:=1 to 5 do   // 5 premières combinaisons les plus sorties
     begin
      Memo1.Lines.Add(Query1.FieldByname('COMBI').asString;
      Query1.Next;
     end;
    Query1.Active:=False;
    P.S. Évidemment un SGBD moderne (permettant tant qu'à faire des fonctions de fenêtrage) et/ou une base mieux pensée serait une idée à envisager
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    merci pour le mal de tête
    je vais essaye de combiner tous sa mais ce n'est pas gagné
    moi et les requêtes
    ++

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    :doliprane:
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    la table keno contient quoi exactement
    est ce que le chiffre du tirage sont trié

    car 1 2 3 4 est différent 4 3 2 1
    alors que pour le keno c'est une grille est donc le sens des element n'as que peut d'importance
    le plus simple serait de reconstruire la grille de 70 chiffre pour chaque tirage
    est mettre 1 dans la colonne correspondant si celle-ci qui est choisie

    certaine base de données accepte la possibilité de faire des boucle
    cela permettrais de modifier la base dans le sens que l'on veut

    effectivement les table dbf (DBase) sont un peu ancienne
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    oui il sont tries
    dans la base un element contient
    Date,heure,boule1,boule2,,,,,,,,boule20,gain
    j'ai essayer mais le fichier numeros.sql delphi me dit erreur mot cle Union ligne1
    ma table keno2019.dbf
    pour les doliprane je viens d'en prendre un 1000
    comment vous lancer les requetes R1 et R2

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Ah mais le truc c'est que je ne les lance pas
    la seule requête que je lance c'est dans le (seul) morceau de programme (incomplet) Delphi que je le fais

    Voilà une partie des combinaisons ici les combinaisons de chiffres contigus, mais il y en a encore beaucoup à écrire, cela vaudrait presque le coup d'écrire une petite fonction Delphi qui créerait le fichier SQL.
    Vous sauvegardez ce SQL sur le disque dur (au même endroit que la table)
    Code SQL : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE1 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE2 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE3 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2)+'_' FROM 1 FOR 2)   AS COMBINAISON
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE2 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE3 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE3 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE4 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE5 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE6 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE7 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE8 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE9 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE10 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE11 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE12 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE13 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE14 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE15 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE16 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    UNION
    SELECT JOUR,HEURE,
    SUBSTRING(CAST(BOULE17 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2)+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE20 AS CHAR(2)+'_' FROM 1 FOR 2)
    FROM KENO2019.DBF
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    et merci pour votre aide
    donc j'ai créer un fichier numeros.sql avec votre commentaire
    j'ai seulement remplacer JOUR par le mot DATE de ma base
    (ps entre select et union il ne faut pas mettre des parentheses)

    mais quand je lance le query j'ai un message utilisation incorrect du mot clé

    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
     
    var
    i:integer;
    begin
     
    Query1.Active:=False;
    Query1.SQL.Text:='SELECT COMBI,COUNT(*) AS C FROM numeros.SQL  ORDER BY COMBI,NUMERO';
    Query1.Active:=True;
    For i:=1 to 5 do   // 5 premières combinaisons les plus sorties
     begin
      Memo1.Lines.Add(Query1.FieldByname('COMBI').asString;
      Query1.Next;
     end;
    Query1.Active:=False;
    end;

    merci

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    vous joint ma base pour voir si c'est moi ou la base
    merci
    Fichiers attachés Fichiers attachés

  13. #13
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    bonjour
    donc j'ai créer un fichier numeros.sql avec votre commentaire
    j'ai seulement remplacer JOUR par le mot DATE de ma base
    premier problème en perspective car Date est un mot réservé
    2 solutions : changer le nom de la colonne ou remplacer DATE par K."DATE" en donnant un alias K à KENO2019 ou remplacer DATE Par KENO2019."DATE"

    testé sur votre base mais comme je l'ai déjà dit il manque encore beaucoup de combinaisons
    Code SQL : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE1 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE2 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE2 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE20 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K

    à fusionner
    Code SQL : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
     
    UNION
    /* saut de 1 boule*/
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE1 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE2 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE20 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    /* saut de 2 boules*/
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE1 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE2 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE3 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE4 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE5 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE6 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE7 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE8 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE9 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE10 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE11 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE12 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE13 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE16 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE14 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE17 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    UNION
    SELECT K."DATE",HEURE,
    SUBSTRING(CAST(BOULE15 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE18 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE19 AS CHAR(2))+'_' FROM 1 FOR 2)+
    SUBSTRING(CAST(BOULE20 AS CHAR(2))+'_' FROM 1 FOR 2)
    AS COMBI
    FROM KENO2019.DBF K
    etc... il y a encore un très très long travail à mon avis
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    donc DATE est un mot clé
    ideal serait que je restructure ma base donne avec un autre nom
    genre LADATE

  15. #15
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    donc DATE est un mot clé
    Oui et ce pour tout les SGBD que je connais
    ideal serait que je restructure ma base donne avec un autre nom
    genre LADATE
    Ou JOUR comme je l'avais fait mais l'idéal serait aussi de changer de SGBD et AMHA de structure (tout dépendant, entre autre, de votre version de Delphi)

    Enfin, j'ai un doute, vu le nombre de combinaisons 4845 C(420) (il me semble que c'est le bon terme en probabilité ) possibles, je crains que la taille du SQL soit trop importante (surtout que l'on y rajoute des fonctions SUBSTRING(CAST augmentnt ainsi le nombre de caractères ! Je sais que la taille du SQL est régit par une contrainte de taille aux alentours de 32Ko je pense

    un test de génératon de SQL me fourni un fichier SQL de 337 Ko
    Nom : Capture.PNG
Affichages : 649
Taille : 39,5 Ko
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    et merci pour ce cours de sql
    je crois que je vais oublier cette fonction
    par contre j'ai plus erreur sauf que delphi me dit
    qu'il ne trouve pas valeur après le order
    combi j'ai compris mais après numéro c'est quoi ?
    merci

  17. #17
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    combi j'ai compris mais après numéro c'est quoi ?
    dans votre code ce devrait être ORDER BY C DESC pour obtenir les combinaisons les plus sorties en premier

    Voilà une solution qui va remplir une table (temporaire) de combinaisons à créer
    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
    CREATE TABLE COMBINAISONS 
    (JOUR DATE,
     HEURE ,
     B1 CHAR(2),
     B2 CHAR(2),
     B3 CHAR(2),
     B4 CHAR(2)
    ); 
     
    // ou 
     
    CREATE TABLE COMBINAISONS 
    (JOUR DATE,
     HEURE ,
     COMBI VARCHAR(8)
    );
    le code suivant va remplir cette table des 4385 possibilités de chaque tirage la partie BDE n'a pas été testée, j'ai utilisé RIO pour écrire cette partie
    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
    49
    50
    51
    52
    53
    54
    55
    56
     
    uses system.Math;
     
    { TForm1 }
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i,j,o : Integer;
        s,r : String;
    {// Partie BDE
      AQuery : TQuery;
    }
     
    function inttobin (p_nb_int: uint64; p_nb_digits: byte=64): string;
    begin
      SetLength(Result, p_nb_digits);
      while p_nb_digits > 0 do
      begin
        if odd(p_nb_int) then
          Result[p_nb_digits] := '1'
        else
          Result[p_nb_digits] := '0';
        p_nb_int := p_nb_int shr 1;
        dec(p_nb_digits);
      end;
    end;
     
    begin
    {// partie BDE
     AQuery:=TQuery.Create(Self);
     try
     AQuery.DatabaseName:=xxxxx; }
     for I := Trunc(power(2,20)) downto 0 do
       begin
        s:=inttobin(I,20);
        if s.CountChar('1')=4 then
         begin
           o:=0;
           r:='INSERT INTO COMBINAISONS(JOUR,HEURE,B1,B2,B3,B4) SELECT JOUR,NUMERO,';
           for j:=1 to 4 do
            begin
              o:=Pos('1',s,o+1);
              r:=r+Format('SUBSTRING(CAST(BOULE%d AS CHAR(2)+',[o]);
              r:=r+Quotedstr('_')+') FROM 1 FOR 2)';
              if j<4 then r:=r+','; // remplaçable par '||' si au lieu de stocker les 4 numéros on veut directement stocker une COMBI VARCHAR(8)
            end;
           r:=r+' FROM KENO2019';
    {// Partie BDE
           Aquery.SQL.text:=R;
           AQuery.ExecSQL;}
         end;
       end;
    {// Partie BDE
      finally
       AQuery.Free;
      end;}
    end;
    N.B. il y a certainement mieux que la transformation d'un nombre en chaine binaire pour obtenir les combinaisons de 4 boules
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour
    vais tester sa ce soir
    on voit que vous en connaissait un rayon
    moi et les bases de donnée sa fait deux
    +++

  19. #19
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 932
    Points
    40 932
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par tintin62 Voir le message
    on voit que vous en connaissez un rayon
    l'idée d'utiliser une boucle avec des nombres, rendons à QI130 ce qui lui appartient, vient de cette discussion
    Puis j'ai glané sur le net une fonction qui m'a permis de transformer les nombres en chaine binaire.
    moi et les bases de donnée ça fait deux
    et c'est pas avec DBase que cela va croître d'ailleurs votre structure est pénalisante ne serait-ce que au niveau du tableau de 20 Char(2) pour représenter les boules, avec un zéro significatif pour les unités, eût été plus facile
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  20. #20
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 410
    Points : 5 801
    Points
    5 801
    Par défaut
    salut

    le plus simple serais d'utiliser une chaine de 70 ou 80 caractere
    a chaque valeur trouvé tu remplace son indice par 1 le reste etant des zero
    il ne resteras plus qu'a faire une sommation de l'indice voulue

    disons que tout ceci ce rapproche d'un tableau de boolean (0/1)


    Initiale = '00000000000000000000000000000...'
    le premier tirage donne 3
    tirage 1 '00100000000000000000000000000...'
    le deuxieme donne 7
    '00100001000000000000000000000...'
    le x donne 70
    '00100001000000000000000000000...1'

    de cette manière il ne te reste plus qu'a faire une sommation des element voulues
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Tirage aléatoire dans une base donnée
    Par leloup84 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 30/01/2006, 17h13
  2. Création d'un alias sur base données "Microsoft Text Dr
    Par defluc dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/06/2005, 09h28
  3. Réponses: 6
    Dernier message: 04/05/2005, 10h58
  4. Delphi - Base donnée Paradox, problème de nom des champs
    Par mjp dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2005, 22h10
  5. base données avec java mono et multi utilisateurs
    Par Garion dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 03/12/2004, 10h20

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