Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Minimalwert über mehrere Spalten, jedoch nicht 0

Frage Entwicklung Datenbanken

Mitglied: rumbleDom

rumbleDom (Level 1) - Jetzt verbinden

09.02.2013 um 11:26 Uhr, 3333 Aufrufe, 5 Kommentare

Minimalwert auswerten, allerdings nicht 0 (also größer 0)

Hallo,

ich habe eine Tabelle mit mehreren Werten in mehreren Spalten wo ich den Mindestwert bestimmen muss.

Allerdings habe ich das Problem, dass dieser Wert nicht 0 sein darf.

Schema
ID, Wert01, Wert02, Wert03
1, 300, 0, 325 (min is 300)
2, 225, 275, 0 (min is 225)
3, 0, 500, 300 (min is 300)

Vom Prinzip her wäre das eigentlich so, allerdings bekomme ich da immer die 0 ausgewertet:

SELECT min(least(Wert01, Wert02, Wert03)) FROM table ...

Gibt es hierfür überhaupt eine SQL-Syntax oder muss ich dafür einen weiteren Workaround Scriptseitig bauen?

Gruß, Rumble
Mitglied: nxclass
10.02.2013 um 00:18 Uhr
mir fällt da nur das ein:
01.
SELECT ... 
02.
CASE 
03.
  WHEN `wert1`>0 AND `wert1`<`wert2` AND `wert1` < `wert3` THEN `wert1` 
04.
  WHEN `wert2`>0 AND `wert2`<`wert1` AND `wert2` < `wert3` THEN `wert2` 
05.
  WHEN `wert3`>0 AND `wert3`<`wert1` AND `wert3` < `wert2` THEN `wert3` 
06.
  ELSE 0 
07.
END AS 'min' 
08.
FROM ...
Bitte warten ..
Mitglied: Biber
10.02.2013 um 00:49 Uhr
Moin nxclass,

im Prinzip ja, aber...

--> bei einer Konstellation von Wert1/Wert2/Wert3 = 0/1000/1000 oder auch 500/500/1000 kommt als "kleinster Wert ungleich 0" leider 0 heraus.

Die jeweils zweiten "<"-Prüfungen sollten besser als "<=" formuliert werden.

Grüße
Biber
Bitte warten ..
Mitglied: nxclass
10.02.2013 um 01:13 Uhr
Die jeweils zweiten "<"-Prüfungen sollten besser als "<=" formuliert werden.
absolut richtig

Moin nxclass,
ich geh jetzt ins Bett.
Bitte warten ..
Mitglied: ByteKiller
10.02.2013 um 11:35 Uhr
Moin moin,

also ich würde dir empfehlen noch mal dein Tabllenlayout zu überdenken und evtl. zu änderen, wenn das von deiner Seite aus machbar ist und das Schema nicht fix ist.

Wenn ich das richtig sehe hast du sowas wie mehrere Messreihen, die wiederum mehrere Messdaten haben. Da könnte man Folgendes machen:

Messreihe
ID, Name
1, Reihe 1
2, Reihe 2
...
n, Reihe XYZ

Messpunkte
ID, MessreiheID, Wert
1, 1, 300
2, 1, 0
3, 1, 325
4, 2, 225
5, 2, 275
6, 2, 0
...
m, n, 0
m+1, n, 500
m+2, n, 300
...

Dann kannst du die Tabllen JOINen (anhand der Messreihen ID) und mit einer WHERE Klausel deinen Wert finden.
Würde sagen das wäre eine saubere Lösung.
Gruß
ByteKiller
Bitte warten ..
Mitglied: rumbleDom
15.02.2013 um 07:44 Uhr
Hallo @all,

aufgrund der Performance habe ich jetzt auch das Tabellenlayout dahingehend angepasst, dass der Minimalwert als weitere Spalte bei INSERT oder UPDATE mit geschrieben wird. Nun läuft es wirklich reibungslos. Herzlichen Dank für Eure Hilfe!

Gruß, rumble
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Mehrere Instanzen

Frage von ForgottenRealm zum Thema Datenbanken ...

Datenbanken
MySQL: Zwei Spalten in einer View zählen (11)

Frage von Memo66 zum Thema Datenbanken ...

VB for Applications
Mehrere Spalten Durchsuchen und Ergebnisse in neuer Tabelle Ausgeben (3)

Frage von Mr.Green zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(6)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Datenschutz

Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht

Information von BassFishFox zum Thema Datenschutz ...

Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Utilities

CCleaner 5.33 mit Malware infiziert

(25)

Information von SeaStorm zum Thema Utilities ...

Heiß diskutierte Inhalte
Utilities
CCleaner 5.33 mit Malware infiziert (25)

Information von SeaStorm zum Thema Utilities ...

Festplatten, SSD, Raid
gelöst Problem mit DELL 815R Server und Windows Bluescreen (24)

Frage von Leo-le zum Thema Festplatten, SSD, Raid ...

Windows Netzwerk
Dateien mit Intelligenz per GPO ins Programmverzeichnis (14)

Frage von erwin.t zum Thema Windows Netzwerk ...

JavaScript
gelöst Kopierschutz auf Webseite (13)

Frage von honeybee zum Thema JavaScript ...