Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ett SQL eller databasproblem?

Postades av 2003-08-20 12:22:05 - Peter Björklund, i forum databaser, Tråden har 3 Kommentarer och lästs av 862 personer

Hej,

Tänkte lägga ut mitt lilla problem för att se om jag kan få hjälp att lösa det.

Det finns tre tabeller i databasen som är berörda i problemet. Dessa heter MonthCalendar, DayCalendar och MonthDay.

Tabellen MonthCalendar innehåller en räknare (IDMonth) och månaderna (Month) 01-12.

Tabellen DayCalendar innehåller en räknare (IDDay) och dagarna (Day) 01-31.

Tabellen MonthDay är en kopplingstabell då förhållanden N-N (Många till många) råder. Denna tabell innehåller primärnycklarna från MonthCalendar och DayCalendar tabellerna.

MonthCalendar innehåller alltså 365 rader i kombination av IDMonth och IDDay.

Nu till vad jag vill göra och problemet. Jag vill, utifrån två datum räkna ut antalet dagar/nätter dem emellan.

Anta att övernattning skall ske mellan datumen 2003-01-01 och 2003-01-31 då skall jag få ut 30 nätter. Detta funkar men...

Anta att övernattning skall ske mellan datumen 2003-01-01 och 2003-02-28 tex då räknas dagarna 02-28 fram ur månad 01 och dagarna 02-28 fram ur månad 02. Alltså 54 nätter. Jag vill ju att 58 nätter skall räknas fram eftersom uträkningen skall ske mellan 01/01 ->02/28.

Skall databasen moduleras om för detta är är det ett SQL problem?

Så här ser min SQL kod ut...

SELECT COUNT(MonthDay.IDDay) AS TotalDays FROM MonthDay,MonthCalendar,DayCalendar WHERE MonthDay.IDMonth = MonthCalendar.IDMonth AND MonthCalendar.Month BETWEEN '01' AND '02' AND MonthDay.IDDay = DayCalendar.IDDay AND DayCalendar.Day > '01' AND DayCalendar.Day <= '28'


Svara

Sv: Ett SQL eller databasproblem?

Postades av 2003-08-20 14:38:34 - Andreas Hillqvist

Varför har du tabellerna? Ser ingen mening i att lagra dagar eller månader i tabeller. Det är bättre att använda datumfält. Om du förklarar varför du använder dina tabeller, så kanske vi kan föreslå ett bättre alternativ.

Frågan tror jag du kan lösa så här:

SELECT COUNT(MonthDay.IDDay) AS TotalDays
FROM MonthDay LEFT JOIN
MonthCalendar ON MonthDay.IDMonth = MonthCalendar.IDMonth LEFT JOIN
DayCalendar ON MonthDay.IDDay = DayCalendar.IDDay
WHERE MonthCalendar.Month & '-' & DayCalendar.Day BETWEEN '01-01' AND '02-28'


Svara

Sv: Ett SQL eller databasproblem?

Postades av 2003-08-20 15:03:49 - Mikael Sälle

Varför inte bara göra såhär

SELECT NumDays = DATEDIFF(dd, '2003-01-01', '2003-02-28')


Svara

Sv: Ett SQL eller databasproblem?

Postades av 2003-08-22 02:54:26 - Peter Björklund

Jag jobbar vidare på ett annat sätt istället. Du fick mig att tänka till Andreas med dina fråga behöver du tabeller. Jag har stått så länge i problemet nu att jag inte på rak arm kan säga hur jag tänkt från början.

Jobbar i VC++ och har hittat COleDateTime och COleDateTimeSpan som tydligen låter mig att jobba ganska fritt med datum och "tid emellan" två datum.

Tack skall ni ha.


Svara

Nyligen

  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 878
27 965
271 771
1 014
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies