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, 3110 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

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

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

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

Frage von Memo66 zum Thema Datenbanken ...

LAN, WAN, Wireless
Mehrere Hardware Firewalls (10)

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

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...