Author Topic: [SQL] Datenbank -> xyz.conf Datei  (Read 1133 times)

p

  • Global Moderator
  • Apache
  • *****
  • Posts: 110
  • Karma: +27/-0
    • View Profile
[SQL] Datenbank -> xyz.conf Datei
« on: October 30, 2013, 09:36:47 am »
Hi,

ich habe hier ein Tool rumfliegen, mit welchem man relativ schön aus Datenbankquerys mit der Hilfe von template-Dateien Konfigurationsdateien erstellen lassen kann:

global.conf:
- context mit DB-Query und Zuordnung eines templates

*.template:
- Anordnung von Feldern oder plaintext.

global.conf
Code: [Select]
[beispiel]
db_host localhost
db_name beispiel
db_user root
db_pass root
db_select
SELECT *
FROM beispiel

file_template beispiel.template


Template:
Code: [Select]
<begin>
foo = bar
bar=%datenbankfield%
%anderesdatenbankfield%=foo
hurrrdurrrr
durhur = murr
<end>

------

Das Problem ist jetzt, dass das Tool nur row-für-row des Results abarbeitet und ich habe keine Lust das Skript zu verstehen und anzupassen. Folgende Situation:
Es gibt eine Tabelle "group" und eine Tabelle "user", dazwischen natürlich eine Tabelle wegen der n:m-Beziehung.
Das Query um eine Konfigurationsdatei zu erstellen, in welcher der Name der group, anderer Stuff und eben die dazugehörigen User drinstehen, sähe so aus:
Code: [Select]
SELECT group.name, user.name
        FROM group, X_groupmember, user
        WHERE group.id = X_groupmember.id_group AND user.id = X_groupmember.id_user;

Das führt zu der Ausgabe:
Code: [Select]
+------+-------+
| group.name | user.name |
+------+-------+
| X | user1    |
| X | user2    |
+------+-------+

Daraus würde das Tool jetzt eine Konfigurationsdatei erstellen die so aussähe:
Code: [Select]
[X]
bla
bla
member => user1

[X]
bla
bla
member => user2


gewünscht ist aber:

Code: [Select]
[X]
bla
bla
member => user1
member => user2


---------

Habt ihr eine Lösungsidee?
Ich habe das jetzt wie folgend gelöst - aber ist das wirklich so gut? :D

Code: [Select]
SELECT group.name, group_concat(user.name separator '\nmember =>') AS modified_name
        FROM group, X_groupmember, user
        WHERE group.id = X_groupmember.id_group AND user.id = X_groupmember.id_user;


Wer unter euch ohne Sünde ist, der werfe den ersten Stein  :ugly;


Edit:
Natürlich noch ein ´GROUP BY group.id´ am Ende des Statements, sonst klappts bei mehreren groups nicht mehr.
« Last Edit: October 30, 2013, 10:14:52 am by p »