| 

.NET C# Java Javascript Exception

4
Hallo zusammen,

ich beschäftige mich seit einiger Zeit mit MySQL und komme damit auch gut zurecht. Ich bin jetzt aber auf ein kleines Problem gestoßen, wo ich nicht so richtig weiter weiß und hoffe, dass mir jemand einen Tipp geben kann.

Ich habe eine Tabelle, welche Daten von einer Anlage in der MySQL-Datenbank archiviert. Die Abfrage möchte ich über eine Stored-Procedure machen:

CREATE DEFINER=`...` PROCEDURE `Großanzeige`(IN j CHAR(10), IN t CHAR(25))
BEGIN
SELECT

ts,
shift,
job,
ident,
typ,

force_spring_1,
force_spring_2,

SUM(quantity_weak,
SUM(quantity_normal),
SUM(quantity_strong),

load_group_1,
load_group_2,

sticker_1,
sticker_2,

color_1,
color_2,

SUM(quantity_too_strong),
SUM(quantity_too_weak)

FROM `...`
WHERE job = j AND ts >= t
ORDER BY id DESC LIMIT 1;
END

Funktioniert auch, bis auf die Tatsache, dass mir die jeweils ersten Datensätze angezeigt werden und nicht die jeweils letzten Datensätze. Wie würde ich es hinbekommen, dass mir auch zu ts, shift, job, typ etc. die letzten Werte angezeigt werden ?

Danke schonmal im Voraus, Steve
News:
26.08.2016
Steve 23 3
Ich verstehe nicht wirklich, worüber ich rede
lassenhannahpat 14.09.2017
4 Antworten
1
Da Ihre Abfrage SUM-Funktionen enthält, sollten Sie zunächst die Ergebnisse nach den Spalten gruppieren, die keine Summe enthalten. So würden Sie zunächst alle Datensätze gruppiert erhalten.
Nun zu den "letzten" Datensätzen:
Prinzipiell sehe ich folgende Möglichkeiten:
1. Sie müssen ein Suchkriterium für diese Datensätze finden (kann ich leider nicht, da mir die Tabellenstrukturen fehlen - es könnte z.B. das Anlagedatum des Datensatzes verwendet werden).
2. Die gruppierte Abfrage entsprechend einer zusätzlichen Bedingung (siehe 1.) sortieren und mit LIMIT 1 beschränken.

Vielleicht hilft dies ja weiter...
31.08.2016
edvservice 1,3k 1 6
Möglicherweise hilft es auch, wenn man die Sache in Unterabfragen auflöst. Manche Sachen lassen sich dann viel eleganter formulieren.
muffi 01.09.2016
1
Nach einigen Recherchen bin ich auf diese Lösung gekommen:

BEGIN
SELECT

SUBSTRING_INDEX(GROUP_CONCAT(CAST(ts AS CHAR) ORDER BY id DESC), ',', 1 ) As "Zeitstempel",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(shift AS CHAR) ORDER BY id DESC), ',', 1 ) As "Schicht",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(job AS CHAR) ORDER BY id DESC), ',', 1 ) As "Auftrag-Kennung",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(ident AS CHAR) ORDER BY id DESC), ',', 1 ) As "Feder-Identnummer",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(typ AS CHAR) ORDER BY id DESC), ',', 1 ) As "Feder-Typ",

SUBSTRING_INDEX(GROUP_CONCAT(CAST(force_spring_1 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Federkraft in Schale 1",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(force_spring_2 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Federkraft in Schale 2",

SUM(quantity_weak) As "Anzahl der Federn in Lastgruppe 1",
SUM(quantity_normal) As "Anzahl der Federn in Lastgruppe 2",
SUM(quantity_strong) As "Anzahl der Federn in Lastgruppe 3",

SUBSTRING_INDEX(GROUP_CONCAT(CAST(load_group_1 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Lastgruppe in Schale 1",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(load_group_2 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Lastgruppe in Schale 2",

SUBSTRING_INDEX(GROUP_CONCAT(CAST(sticker_1 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Inhalt Etikett 1",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(sticker_2 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Inhalt Etikett 2",

SUBSTRING_INDEX(GROUP_CONCAT(CAST(color_1 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Farbmarkierung in Schale 1",
SUBSTRING_INDEX(GROUP_CONCAT(CAST(color_2 AS CHAR) ORDER BY id DESC), ',', 1 ) As "Farbmarkierung in Schale 2",

SUM(quantity_too_strong) As "Anzahl Federn zu stark",
SUM(quantity_too_weak) As "Anzahl Federn zu schwach"

FROM `...`
WHERE job = j
GROUP BY ident
ORDER BY ID DESC LIMIT 1;
END
02.09.2016
Steve 23 3
0
Amazing article thanks or sharing..
Economics Homework Help
26.09.2016
0
Yahtzee is free online game played by dice. All game who played by dice, Yahtzee is one of the best game. You can click here https://gamesdro.com/yahtzee and play best dice game with your friends and family
11.09.2017

Stelle deine Mysql-Frage jetzt!