Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3310 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 ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

Windows 7
Bluesreens unternehmensweit (19)

Frage von SYS64738 zum Thema Windows 7 ...

LAN, WAN, Wireless
IP Adressen - Modem - Switch - Accesspoint (17)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
DNS ins mehreren Subnetzen (13)

Frage von joerg zum Thema Windows Netzwerk ...