Normalisierte Tabllen zusammenfügen (MySQL)

S-lord

Mitglied
Moin moin,

ich stehe vor folgendem Problem: Ich habe in einer Datenbank 4 Tabellen, die zusammengehören. Die erste Tabelle würde ich gern als Basis einer neuen verwenden, denn sie ist mit einer id durchnummeriert, die sich auf das bezieht, worum es geht. Sagen wir es ist die id, die einem kleinen Text zugeordnet ist. Dann gibt es eine weitere Tabelle, die Kommentare enthält zu diesen Texten, wobei auch mehrere Kommentare zu einem vorhanden sein können. Dann eine Tabelle mit Autoren, auch hier mehrere pro Text möglich. Und noch eine mit Zusatzinfos, auch wieder mehrere pro Text.

Wie füge ich das Ganze nun so zusammen, dass ich eine Tabelle bekomme, die für einen Text eine Zeile hat, und in den Tabellenzellen eben mehrere Dinge bspw. Kommentare zusammengefügt werden?

Ich habe es folgendermaßen versucht:

$query = "SELECT papers.paper_id,
papers.user_id,
paper_authors.first_name,
paper_authors.last_name,
paper_authors.affiliation,
papers.language,
papers.comments_to_dr,
paper_settings.setting_name,
paper_settings.setting_value,
paper_comments.comments,
paper_comments.viewable
FROM papers
LEFT JOIN paper_settings
ON papers.paper_id = paper_settings.paper_id
LEFT JOIN paper_authors
ON papers.user_id = paper_authors.author_id
LEFT JOIN paper_comments
ON papers.paper_id = paper_comments.paper_id
WHERE paper_comments.viewable = 0";

Allerdings bekomme ich nun mehrere Zeilen pro id, und auch nur die ids, bei denen viewable = 0 ist. Dieser Filter bspw. soll auch angewandt werden, bevor die Tabelle der Kommentare überhaupt gejoined werden soll.

Leute ich hoffe hier hat jemand eine Idee! Vielen lieben Dank schonmal!

Viele Grüße!
 
Ich versteh leider nicht, was du haben willst.
Schrieb mal ein wenig mehr zu deinem Datenmodel.

Zu deinem Filter. Das kommt nicht drauf an, ob vorher oder nachher filterst.
Ich würde den LEFT JOIN auch die paper_comments auf ein INNER JOIN wechseln, wenn du nur Einträge haben willst, die einen sichtbaren Kommentar haben
 

Neue Beiträge

Zurück