Servus.
Ich benötige Hilfe bei folgendem Problem: Es besteht die Möglichkeit innerhalb einer SQL-Abfrage eine weitere Abfrage zu tätigen.
Pseudocode:
Hier die vereinfachte Taellenstruktur:
Ich muss nun eine Abfrage machen, mir alle Namen aus tb_projects inclusive der zum Projekt zugehörigen Tags und das in 2 Spalten. Auf die Tabellen bezogen ergäbe das folgendes Ergebnis:
Das Problem an der Sache ist, dass ich nicht mit inneren Verknüpfungen arbeiten kann, da ich die zum Projekt zugehörigen Tags alle mit Komma voneinander getrennt in einer Spalte benötige.
Bei einer Abfrage mit INNER JOIN würde ich zu diesem Ergebnis kommen:
Ich weiß, dass ich mit CONCAT_WS(', ',string 1, string 2, ...) die Strings 'zusammenketten' kann. Aber das hilft mir nicht weiter.
Kann man (wie bei CONCAT_WS) das Ergebnis der inneren Abfrage in eine Spalte zwängen, nach folgender Idee?
ACHTUNG PSEUDOCODE
Hat jemand eine Idee bzw. kann mir sagen, wie man mein Problem richtig angeht und lösen kann?
Vielleicht gibt es ja eine Möglichkeit direkt von SQL aus.
Gruß Shibuya
Ich benötige Hilfe bei folgendem Problem: Es besteht die Möglichkeit innerhalb einer SQL-Abfrage eine weitere Abfrage zu tätigen.
Pseudocode:
Code:
SELECT spalte, (SELECT title FROM tabelle2 WHERE argument=1) FROM tabelle1
Code:
+----------------+ +-----------------------+ |tb_tags | |tb_projects | | | | | |tag_id|tag_title| |project_id|project_name| |------+---------+ +----------+------------+ |1 |tag 1 | |1 |name 1 | |2 |tag 2 | |2 |name 2 | |3 |tag 3 | |3 |name 3 | |... |... | |... |... | +------+---------+ +----------+------------+ +-----------------+ |tb_join | | | |project_id|tag_id| +---------+-------+ |1 |1 | |1 |2 | |2 |1 | |3 |2 | |3 |3 | |... |... | +---------+-------+
Code:
(name 1,(tag 1,tag 2)) (name 2,(tag 1)) (name 3,(tag 2,tag 3))
Bei einer Abfrage mit INNER JOIN würde ich zu diesem Ergebnis kommen:
Code:
(name 1, tag 1) (name 1, tag 2) (name 2, tag 1) (name 3, tag 2) (name 3, tag 3)
Kann man (wie bei CONCAT_WS) das Ergebnis der inneren Abfrage in eine Spalte zwängen, nach folgender Idee?
ACHTUNG PSEUDOCODE
Code:
SELECT project_name, CONCAT_WS(', ',(SELECT tag_title FROM tb_join INNER JOIN tb_tags USING(tag_id) WHERE project_id = AKTUELLE_ID) ) FROM tb_projects
Vielleicht gibt es ja eine Möglichkeit direkt von SQL aus.
Gruß Shibuya
Comment