# [MySQL] Komplexe Operation in einem Query?



## Crysis nerd (7. Juli 2011)

Ich frag mich gerade bei einer Homepage, an der ich mitarbeite, ob man nicht eine komplexe Operation in ein Mysql query quetschen kann.
Ich komme zurzeit nicht weiter, ich hoffe ihr könnt mir vllt. helfen.

Folgendes:
Es geht um ein Berechtigungssystem auf einer Homepage.
Wir haben folgende Tabellen:
user_group_option (ID, Name, Type, Value)
user_group_value (GroupID, OptionID, Value)

in der _option Tabelle stehen Berechtigungen drin, mit ihren Standartwerten, zb:
"ID: 1, name: news.write, type:bool, value:0", heißt dass man normalerweise keine News schreiben darf.
in der _value stehen aber spezifische Rechte drin für bestimmte Nutzergruppen, zb:
"GroupID: 1, OptionID: 1, Value: 1", heißt dass die usergruppe mit der ID 1 news schreiben darf.

Um nun alle Berechtigungen für eine Usergruppe festzustellen, könnte man ja recht einfach erst die Standartwerte abfragen und dann mit den eventuell vorhandennen spezifischen werten überschreiben.
Aber irgendwie möchte ich das ganze in einem MySQL query verwirklichen...

Hat irgendjemand eine Idee, ob das klappen könnte?

Und ich hoffe ich habs richtig erklärt.. :/

mfg
Lukas


----------



## Fragile Heart (7. Juli 2011)

Du könntest eine Prozedur definieren, allerdings weiß ich nicht so recht ob das MySQL inzwischen sauber kann.

So direkt als Query fällt mir im ersten Moment nichts ein, aber dafür mache ich das wohl auch viel zu selten.


----------



## <BaSh> (7. Juli 2011)

Also, wie mein SQL-Lehrer immer sagt, der übrigens für Lufthansa etc Datenbanken erstellt, ist MYSQL totaler Müll . Ich würde auf Firebird zugreifen. Der kann alles was die richtigen Server auch können. Zum verwalten der Datenbank würde ich die kostenlose Version von IB-Expert benutzen.


----------



## Hydroxid (7. Juli 2011)

MySQL ist auf jeden Fall kein Müll und wenn der TE jetzt MySQL schon benutzt wird er wohl kaum umsteigen weil sonst viel Programmierarbeit am A**** währe!
MfG


----------



## Fragile Heart (7. Juli 2011)

Naja, verglichen mit Oracle, MSSql, Informix (gibt die eigentlich noch?) ... ist MySQL schon bescheiden. Sorry, aber ist nunmal die Wahrheit.


----------



## Crysis nerd (7. Juli 2011)

Oha.. ihr überrascht mich Leute... ich dachte echt, dass MySQL mehr oder weniger anerkannter Standart ist..
Also das Problem haben wir (also mein Kumpel, nich ich ) jetzt gelößt.
Query (für die, dies interessiert):

```
SELECT
user_group_option.Name,
user_group_option.Type,
IFNULL(user_group_value.Value, user_group_option.Value) as Value
FROM user_group_option
LEFT JOIN user_group_value ON user_group_option.ID = user_group_value.OptionID
AND user_group_value.GroupID = ".$this->UserGroup
```
Aber das interessiert mich gerade echt:
Woran mangelts denn bei MySQL? Was können die anderen besser?

mfg


----------



## Hydroxid (7. Juli 2011)

Aber MySQL ist auch mit das einfachste und leicht zu bedienenste. Außerdem kommuniziert es prima mit PHP


----------



## bbcsb (12. Juli 2011)

Crysis nerd schrieb:


> Woran mangelts denn bei MySQL? Was können die anderen besser?
> 
> mfg



MySql ist genauso gut wie jede andere SQL-Engine, habe alle ihre Vor- und Nachteile. Die Leute hier scheinen wohl die MySQL Community Version mit den kostenpflichtigen Oracle/MS Dingern zu vergleichen anstatt ebenfalls die Enterprise MySQL Version zu vergleichen. Gernerell gibt es aber einen Trend zur No-SQL DB wie z.B. CouchDB.


----------

