Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.Net, Access, SQL: Summa ja liitos samassa kyselyssä (VB.NET)

ari kood [18.11.2016 08:51:25]

#

Moro

Olen tekemässä eräälle myymälle ohjelmaa jonka avulla voisi ennustaa tulevaa myyntiä vertaamalla ajankohtaa aiempien vuosien vastaavaan ajankohtaan (tarvittavaa dataa on usealta vuodelta).
Minulla on jonkinlaista kokoemusta VB.Net ohjelmoinnista n. 10 vuoden takaa, mutta tietokantakokemusta vain viimeisiltä viikoilta.

Ongelmaan:

Taulut Accessissa:

tbl_myynti
| myynti_ID PK | pvm_ID     | summa | selitys |
|--------------|------------|-------|---------|
| 1            | 3.11.2016  | 555   |         |
| 2            | 3.11.2016  | 444   |         |
| 3            | 4.11.2016  | 666   |         |
| 4            | 4.11.2016  | 600   |         |
| 5            | 4.11.2016  | 120   | tilaus  |
| 6            | 5.11.2016  | 400   |         |
| 7            | 10.11.2016 | 357   |         |
| 8            | 11.11.2016 | 654   |         |
| 9            | 11.11.2016 | 50    |         |
| 10           | 12.11.2016 | 780   |         |




tbl_tapahtumatyyppi

| tapahtumatyyppi_ID PK | tapahtumatyyppi_nimi |
|-----------------------|----------------------|
| 1                     | juhlapäivä           |
| 2                     | lomapäivä            |
| 3                     | muu                  |




tbl_tapahtuma

| tapahtuma_ID PK | tapahtuma_nimi | tapahtumatyyppi_ID FK |
|-----------------|----------------|-----------------------|
| 10              | Halloween      | 3                     |
| 11              | Pyhäinpäivä    | 1                     |
| 12              | Isänpäivä      | 1                     |
| 13              | Syysloma       | 2                     |
| 14              | muu tapahtuma  | 3                     |



tbl_tapahtuma-pvm

| pvm_ID PK  | tapahtuma_ID PK, FK | selitys    |
|------------|---------------------|------------|
| 31.10.2016 | 10                  |            |
| 5.11.2016  | 11                  |            |
| 13.11.2016 | 12                  |            |
| 11.11.2016 | 13                  | kyläjuhlat |

Näin haluaisin näyttää tiedot datagridview controllissa

| pvm        | myynti | juhlapäivä  | lomapäivä | muu           |
|------------|--------|-------------|-----------|---------------|
| 31.10.2016 |        |             |           | Halloween     |
| 1.11.2016  |        |             |           |               |
| 2.11.2016  |        |             |           |               |
| 3.11.2016  | 999    |             |           |               |
| 4.11.2016  | 1386   |             |           |               |
| 5.11.2016  | 400    | Pyhäinpäivä |           |               |
| 6.11.2016  |        |             |           |               |
| 7.11.2016  |        |             |           |               |
| 8.11.2016  |        |             |           |               |
| 9.11.2016  |        |             |           |               |
| 10.11.2016 | 357    |             |           |               |
| 11.11.2016 | 704    |             |           | muu tapahtuma |
| 12.11.2016 | 780    |             |           |               |
| 13.11.2016 |        | Isänpäivä   |           |               |

Kuinka saan luotua kyselyn Accessissa tai Visual Studiossa joka tuottaisi em. taulun jonka voisin näyttää datagridview controllissa?
Olen kyllä saanut jotain aikaan, mutta olen sata varma, että on myös helpompiakin keinoja.

Ps. miksihän tasalevyisyys tagit ei toimi...?

HTML5 [18.11.2016 16:17:25]

#

ari kood kirjoitti:

Ps. miksihän tasalevyisyys tagit ei toimi...?

Käytä [koodi]-tägejä.

Grez [18.11.2016 21:24:15]

#

Nuo tasaleveys tagit on tarkoitettu tekstin keskellä käytettäväksi, jos haluaa tasalevyisen fontin. Ne ei silti säilytä useampaa peräkkäistä välilyöntiä kuten kooditagi.

Itse kysymykseen, niin ei noita oikein voi järkevästi tehdä sql-kyselyinä. Pitää erottaa mikä osa myynnistä johtuu erikoispäivästä ja paljonko on muuta kausivaihtelua. Siihen löytyy valmiita analyysisoftia, mutta jos haluaa koodailla itse niin järkevintä on lienee lukea taulut kokonaisuudessaan muistiin (noin pienellä datalla) ja pyöritellä sitten siellä.

ari kood [18.11.2016 21:25:50]

#

Noniin, nyt näyttää paremmalta.
Tasalevyisys muotoilu tagia [t]teksti[/t] en kuitenkaan saa toimimaan.

Edit: Ah, Grez ehtikin tähän jo vastaamaan.

Metabolix [19.11.2016 15:03:25]

#

Kyllähän tuohon voi tehdä jotain tämän tyyppistä:

SELECT
  myynti.id, myynti.pvm,
  SUM(myynti.summa) AS myynti,
  tapahtuma.*
FROM myynti
LEFT JOIN tapahtuma ON myynti.pvm = tapahtuma.pvm
-- Lisää tähän vielä muut JOIN-osat tapahtuman tietoihin.
GROUP BY myynti.pvm

Dataa joutuu varmasti viimeistelemään vielä VB:n puolella, mutta näin ainakin saisi tiivistettyä datan niin, että on yksi rivi per päivä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta