Ist es in irgendeiner Weise möglich, Daten aus der Datenbank in Wochenspannen auszuwählen? Ich benutze cshtml (nicht MVC) und Webmatrix, wenn das einen Unterschied macht.SQL Wie wählt man Daten in Wochen aus?
var dbQueryAllVariants = "SELECT * FROM Test WHERE exercise = " + exercise + " AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
So jetzt ich dies verwenden, die ich in einem Startdatum setzen (ex. 2016.11.01) und Enddatum (ex. 2016.11.30) (yyyy-mm-dd Cuz Nordeuropa). Dies zeigt alle Daten in der Datenbank zwischen diesen Daten an, aber da alle Zeilen in der Datenbank nur einen Tag als Datum haben, würde das zu betrachtende Ergebnis in Tagesform sein. Ich möchte, wenn es Wochen machen kann, in diesem Fall vom ersten bis letzten November als Beispiel wären ca. 4 Wochen, ist das möglich? Außerdem sind die Daten in der Datenbank int-Werte, so dass ich in der Lage wäre, diejenigen hinzuzufügen, die die gesamte angezeigte Woche anzeigen, wenn dies sinnvoll ist.
Zum Beispiel.
column 1 column 2 column 3
5 . . . . 6 . . 2016-11-13
8 . . . . 10 . . 2016-11-15
6 . . . . 3 . . 2016-11-17
So wie jetzt davon 3 Tage mit einer Summe von 11 für Tag 1, 18 für Tag 2 und 9 für Tag 3 angezeigt werden würde, aber während in Wochen angezeigt würde es 11 + 18 sein + 9 = 38, wie für ein Beispiel. Dies ist vielleicht nicht einmal möglich, aber ich würde gerne wissen, wie das geht, wenn möglich!
Wenn dies keine mögliche Lösung ist, gibt es eine Möglichkeit, wie Sie alle Daten in Tagesform auswählen, in einem Array oder was auch immer, und von dort senden Sie es als wöchentliche Summe basierend auf den Wochen gruppiert das Jahr (ex. November enthält Woche 44-48) so etwas? Was ich versuche zu sagen ist, dass, wenn das Endergebnis ist, was ich will, es egal ist, wie es gemacht wird.
@{
//Calls for my website layout.
Layout = "~/_SiteLayout.cshtml";
//Browser title of the specific page.
Page.Title = "TEST";
//Opens database.
var db = Database.Open("SmallBakery");
//Variables.
var exercise = Request.Form["Exercise"];
var fromDate = Request.Form["fromDate"];
var toDate = Request.Form["toDate"];
var exerVariName = "";
var exerVariNameS = "";
var exerVariNameB = "";
var exerVariNameD = "";
//Defaults to show data between these
//dates if user dont choose any dates.
var noStartDate = "1970-01/01";
var noEndDate = "2099-12/31";
//If user does not choose eiter/any start/end date
//this will end up showing all results possible.
if (fromDate == "") {
fromDate = noStartDate;
}
if (toDate == "") {
toDate = noEndDate;
}
//Takes exerVariName from different dropdowns
//depending on which exercise is selected due to
//the fact that only one dropdown is visible at any time.
if (exercise == "1") {
exerVariName = Request.Form["exerVariNameS"];
} else if (exercise == "2") {
exerVariName = Request.Form["exerVariNameB"];
} else {
exerVariName = Request.Form["exerVariNameD"];
}
//Gets exercise variants to the dropdown menu.
var getSVariName = "SELECT * FROM exerciseVariants WHERE exerVariNameID = 1 ORDER BY exerVariName";
var getBVariName = "SELECT * FROM exerciseVariants WHERE exerVariNameID = 2 ORDER BY exerVariName";
var getDVariName = "SELECT * FROM exerciseVariants WHERE exerVariNameID = 3 ORDER BY exerVariName";
var getData = "SELECT * FROM Test";
//Gets the date.
var getDate = "SELECT date FROM Test";
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<!-- Form for posting. -->
<form method="post" action="">
<!-- Radio buttons to select which data to show. -->
<div>
<label>Squat</label>
<input type="radio" name="Exercise" id="hej1" value="1" />
</div>
<div>
<label>Benchpress</label>
<input type="radio" name="Exercise" id="hej2" value="2" />
</div>
<div>
<label>Deadlift</label>
<input type="radio" name="Exercise" id="hej3" value="3" />
</div>
<div>
<!-- Dropdown menu with squat-variant-names. -->
<select id="exerVariNameS" name="exerVariNameS">
<option value="all">All</option>
<option value="Comp">Competition</option>
@foreach (var get in db.Query(getSVariName)) {
//Gets the exercise variation names from
//the database and puts them in a dropdown.
<option value="@get.exerVariName">@get.exerVariName</option>
}
</select>
<!-- Dropdown menu with bench-variant-names. -->
<select id="exerVariNameB" name="exerVariNameB">
<option value="all">All</option>
<option value="Comp">Competition</option>
@foreach (var get in db.Query(getBVariName)) {
//Gets the exercise variation names from
//the database and puts them in a dropdown.
<option value="@get.exerVariName">@get.exerVariName</option>
}
</select>
<!-- Dropdown menu with deadlift-variant-names. -->
<select id="exerVariNameD" name="exerVariNameD">
<option value="all">All</option>
<option value="Comp">Competition</option>
@foreach (var get in db.Query(getDVariName)) {
//Gets the exercise variation names from
//the database and puts them in a dropdown.
<option value="@get.exerVariName">@get.exerVariName</option>
}
</select>
</div>
<div>
<!-- Date calendar. -->
<input placeholder="From date..." type="text" class="datepicker" name="fromDate" value="@fromDate">
</div>
<div>
<!-- Date calendar. -->
<input placeholder="To date..." type="text" class="datepicker" name="toDate" value="@toDate">
</div>
<!-- The submit button. -->
<input type="submit" value="Show" class="submit" />
</form>
<!-- Displays database value on submit click based on choosen radiobutton from form-post above. -->
@if (IsPost) {
//When I select ALL in the dropdown it runs
//this line because there is no filter for 'exerVariName'.
// var dbQueryAllVariants = "SELECT * FROM Test WHERE exercise = " + exercise + " AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
//When I select a specific exercise variation.
var dbQuerySingleVariant = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName = '" + exerVariName + "' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
//This is what the problem is....
var dbQueryAllVariants = "SELECT DATEPART(week, date) AS weekNumber, sum(kg)+sum(sett) AS grandTotalPerWeek FROM Test WHERE Exercise = " + exercise + " AND DATEPART(week, date) BETWEEN DATEPART(week, " + fromDate + ") AND DATEPART(week, " + toDate + ") GROUP BY DATEPART(week, date)";
var dbQuery = "";
//If dropdown = select all, it does, else, it show the one I pick.
if (exerVariName == "all") {
dbQuery = dbQueryAllVariants;
} else {
dbQuery = dbQuerySingleVariant;
}
//Foreach to write out all the data from db.
var sumTotalWeight = 0;
foreach (var get in db.Query(dbQuery)) {
<a>Weight: </a>
<a>@get.Kg kg</a>
<a> Sets: </a>
<a>@get.Sett</a>
<a> Reps: </a>
<a>@get.Rep</a>
<a> Total reps: </a>@(get.Sett * get.Rep)
<a> @get.date</a>
var totalWeight = @get.Kg * @get.Sett * @get.Rep;
sumTotalWeight += totalWeight;
<a> @totalWeight</a>
<br>
}
@sumTotalWeight
}
</body>
Welche DBMS verwenden Sie? (Wenn es um Datum/Zeit geht, sind viele Produkte weit entfernt von ANSI SQL.) – jarlh
Während ich nicht genau weiß, was das bedeutet, habe ich eine .sdf-Datenbank, ich habe es nicht selbst mit Text codiert, wie ich weiß, ist möglich, ich nur geklickt create, create table, benannte die Spalten und checkte einige Boxen. Und Datum wird als Datetime gespeichert. Nicht sicher, ob das deine Frage beantwortet? –