2017-01-19 6 views
0

Je suis nouveau à SQL et ai créé une base de données dans Lazarus et la langue pascal. J'utilise actuellement SQLlite3. Jusqu'à présent, j'ai créé une base de données qui a les actifs et les passifs (entiers) actuels d'une entreprise, mais je dois créer un algorithme qui diviserait ces deux nombres et entrer la division "ratio" de ces deux nombres dans une nouvelle table, Toute aide serait appréciée.SQLlite Algorithme pour diviser deux colonnes de table et produire le nombre dans une nouvelle table

merci beaucoup.

Répondre

0

Le Sql ci-dessous crée deux tables Sqlite

Entreprises avec des colonnes COMPANYID, actif et passif

CompanyAL avec des colonnes CompanyID et Ratio (de Passifs à l'actif)

Il a ensuite Remplit la table Companies avec quelques lignes, puis utilise un

insert into ... select ... 

pour insérer le ratio des actifs/passifs dans la table CompanyAL. Important: Dans Sqlite, le symbole "diviser", /, donne un résultat entier par défaut et donnerait donc les valeurs Ratio 0 et 2. Pour surmonter cela, vous devez utiliser une expression qui multiplie le résultat par 1,0 ; J'ai fait cela dans le numérateur et la dénomination de l'expression pour calculer la valeur dans la colonne Ratio.

CREATE TABLE "main"."Companies" ("CompanyID" INTEGER PRIMARY KEY NOT NULL check(typeof("CompanyID") = 'integer') , "Assets" INTEGER check(typeof("Assets") = 'integer') , "Liabilities" INTEGER check(typeof("Liabilities") = 'integer')); 

CREATE TABLE "main"."CompanyAL" ("CompanyID" INTEGER PRIMARY KEY NOT NULL check(typeof("CompanyID") = 'integer') , "Ratio" FLOAT); 

insert into Companies(CompanyID, Assets, Liabilities) values(1, 100, 50); 
insert into Companies(CompanyID, Assets, Liabilities) values(2, 50, 100); 

insert into CompanyAL select CompanyID, (Liabilities * 1.0/Assets * 1.0) from Companies 

Testé pour SQLite en utilisant le Sqlite Manager add-in pour Firefox. Évidemment, dans votre application Lazarus, vous devez construire le code SQL requis et utiliser un composant db approprié pour l'exécuter sur la base de données.