Interbase sql programozás

Ez a téma lezárásra került a moderátor által. A lezárás oka: L�gy sz�ves tanulj meg a t�m�nak norm�lis, a probl�m�t j�l k�r�l�r� c�met adni!
Interbase sql programozás
2012-06-01T11:11:37+02:00
2012-06-01T12:37:09+02:00
2022-07-19T19:26:27+02:00
ToZoZoli
Sziasztok!

Problémám akadt egy firebird szerver alatt lévő Interbase adatbázissal.
A feladat, amit záros határidőn belül meg kell oldanom, hogy egy táblában lévő rekord bizonyos mezői alatt lévő szám adatokból átlagot kell számolnom. Majd az átlag alapján egy meghatározott értékkel feltőlteni egy másik táblában található azonos rekord bizonyos mezőjét.
És ezt az egész feladatot egy 1000 rekordon kell végigfuttatni. A két tábla azonos mezőkből épül fel. A rekordokat egy ID mező alapján tudom összekötni egymással, viszont előfordulhat, hogy az egyik táblában még megvan az a rekord a másikba ahova az értéket kell feltőlteni viszont már nincs, úgyhogy azt ki kell hagyni.

Kérdésem milyen sql vagy más kodokkal tudnám ezt megvalósítani?
Keresgettem a neten de nem sok mindenre jutottam, láttma a plsql programozást, de azt sem értetem. Sajnos ez az adatbáziskezeléses rész még új nekem.

Egyébként az adatbázis egy windows-os nyilvántartóprogram része, és ezt a programból nem tudom elvégezni és a program készítői sem válalják, hogy rövid időn belül bele teszik ezt a dolgot.

A feladatot június 10-ig kéne elvégeznem, ha addig nem sikerül az adatbázison keresztül megcsinálon, akkor más módszerhez kell folyamodnom.

A próbálgatások véget csináltam egy tesztrendszert, amin próbálgathatom a kódot.

Válaszaitokat előre is köszönöm!
Mutasd a teljes hozzászólást!

  • Átlagszámítós-csoportosítós (AVG - GROUP BY) lekérdezést csinálsz "A" táblából. Az eredményeket berakod "B" táblába.
    Szerintem megoldható pusztán SQL-lel, de mivel nem ismerem a részleteket (továbbá az IB finomságait sem, már nagyon régen láttam ezt a rendszert), nem biztos.


    "
    Kérdésem milyen sql vagy más kodokkal tudnám ezt megvalósítani?
    "

    SELECT, AVG, GROUP BY (+HAVING ?), INSERT/UPDATE

    Megjegyzés: jún. 10-ig még 9 nap van, ha nagyon nem megy tiszta SQL-lel, programot is írhatsz rá simán.
    Mutasd a teljes hozzászólást!
  • Szia!

    Néztem a parancsokat és az AVG az oszloponként gyüjti az átlagot, nekem meg vízszintesen kéne.

    C-ben valahogy így nézne ki a programkód, hogyan tudnám ezt átteni sql-be?

    main()
    {
    int szamlalo=0;
    int szam1;
    int szam2;
    int szam3;
    int szam4;
    int szam5;
    int db;
    int osszeg;
    float atlag;
    int ertek;

    while (szamlalo!=5000)
    {
    szam1=0;
    szam2=0;
    szam3=0;
    szam4=0;
    szam5=0;
    db =0;
    osszeg=0;
    ertek =0;
    szam1 = ( SELECT jegy12 FROM regi WHERE id=szamlalo);
    szam2 = ( SELECT jegy22 FROM regi WHERE id=szamlalo);
    szam3 = ( SELECT jegy32 FROM regi WHERE id=szamlalo);
    szam4 = ( SELECT jegy42 FROM regi WHERE id=szamlalo);
    szam5 = ( SELECT jegy52 FROM regi WHERE id=szamlalo);
    if (szam1 > 0)
    {
    osszeg=osszeg+szam1;
    db++
    }
    if (szam2 > 0)
    {
    osszeg=osszeg+szam2;
    db++
    }
    if (szam3 > 0)
    {
    osszeg=osszeg+szam3;
    db++
    }
    if (szam4 > 0)
    {
    osszeg=osszeg+szam4;
    db++
    }
    if (szam5 > 0)
    {
    osszeg=osszeg+szam5;
    db++
    }
    atlag=osszeg/db;

    if (atlag>4) ertek=5300;
    else if((atlag <=4) && (atlag >3,5)) ertek=6400;
    else if((atlag <=3,5) && (atlag >3)) ertek=7400;
    else if((atlag <=3) && (atlag >2,5)) ertek=8500;
    else if((atlag <=2,5) && (atlag >=2)) ertek=9600;
    else if(atlag <2) ertek=10600;
    else printf("Hiba %d",szamlalo);

    if (ertek!=0) UPDATE uj SET tandij2m=ertek WHERE id=szamlalo;
    szamlalo++;
    }
    }
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: L�gy sz�ves tanulj meg a t�m�nak norm�lis, a probl�m�t j�l k�r�l�r� c�met adni!
abcd