MySQLi Query für Joomla User Tabellen

kraadde

Benutzer
Beiträge
5
Ich habe eine Joomla Seite die etwa 1800 Benutzer in der Users-Tabelle gespeichert hat. Daneben hat es ein Tabelle User_profiles die Profildaten der Benutzer enthält. Die Tabellen sehen so aus (beispielhaft!):
Tabelle Users:
upload_2017-2-11_0-49-44.png

Tabelle User_profiles:


upload_2017-2-11_0-50-41.png

Nun möchte ich eine neue Tabelle erhalten, die wie folgt aussehen soll:

upload_2017-2-11_0-51-31.png


Ich habe leider nach diversen Versuche keine Ideen mehr wie ich das bewerkstelligen kann.
Hat Jemand hier eine gute Idee?

Danke
Adri
 
Werbung:
Beschäftige Dich ganz grundlegend mit EAV (Entity Attribute Value), und mache Dich auf mehr oder weniger gruselige und inperformante Abfragen gefaßt. Rechne mit viel Arbeit, wenn neue Attribute (profile-key bei Dir) dazukommen. Alternativ: Schaue Dir PostgreSQL und JSONB - Datentypen an und genieße die Aussicht auf große Flexibilität, Performance und Skalierbarkeit.
 
Danke für Deine Antwort. Leider hilft mir das nicht weiter. Joomla unterstützt standardmässig eben MySQLi und ich kann sowieso nicht eine laufende Applikation ändern. Also es bleibt immer noch die Frage wie ich mein Problem löse.
 
Werbung:
Code:
test=*# select * from t_user ;
 id |  name   
----+----------------
  1 | max mustermann
  2 | donald trump
(2 Zeilen)

test=*# select * from t_profile ;
 user_id |  key  |  val   
---------+-------+--------------------
  1 | tel  | 123 456
  1 | mail  | hier@da
  1 | stadt | irgendwo
  2 | stadt | white house
  2 | mail  | knalltuete@amiland
(5 Zeilen)

test=*# select id, name, string_agg(case when p.key='tel' then val else null end,'' ) as tel, string_agg(case when p.key='mail' then val else null end,'') as email, string_agg(case when p.key='stadt' then val else null end,'') as wohnt from t_user left join t_profile p on t_user.id=p.user_id group by id, name;
 id |  name  |  tel  |  email  |  wohnt   
----+----------------+---------+--------------------+-------------
  1 | max mustermann | 123 456 | hier@da  | irgendwo
  2 | donald trump  |  | knalltuete@amiland | white house
(2 Zeilen)

test=*#

string_agg() kennt MySQL nicht, es gibt eine Alternative, die wirst Du finden. Mit jeder neuen Eigenschaft wirst Du Deine Abfrage ändern müssen.
 
Zurück
Oben