Zusammenführen zweier Tabellen

Scheuerbein

Neuer Benutzer
Beiträge
2
Hallo,

ich habe folgendes Problem:
Ich betreibe eine Joomlaseite auf der ich Artikel und davon unabhäng auch Reviews veröffentlicht habe. Nun möchte ich die Reviews in die Artikel Tabelle mit einfügen, jedoch sind die beiden total unterschiedlich.
Ich habe viel gelesen über inner join, left join u.s.w. aber habe Bedenken, dass wenn ich die beiden Tabellen in irgendeiner Form zusammenführe die Ids durcheinandergeworfen werden und die Artikel nicht mehr auf der Seite sind.

Meine Frage nun, gibt es eine Lösung die die Tabelle reviews einfach "hinten ranhängt"? Sozusagen der Tabelle Artikel unterwürfig.

Danke für eure Hilfe!
 
Werbung:
Was ist denn dein Ziel mit der "Zusammenführung"? Normalerweise ergibt das keinen Sinn wenn Artikel und Reviews nicht grade die selben Eigenschaften haben. Selbst wenn das doch so ist ist es noch eine Menge Arbeit...
 
Der Sinn des Ganzen ist es, einen Weg zu finden der mich nicht mehr abhängig sein lässt von einer Review Komponente.
Ich möchte die Reviews als Artikel bearbeiten können und durch Kategorien von den anderen Artikeln trennen und behandeln.
Jedoch möchte ich die über 270 Reviews nicht alle per Hand anlegen müssen sondern suche nach einem Weg eben diese Reviews als Tabelle zu importieren.
 
Werbung:
Ich habe viel gelesen über inner join, left join u.s.w. aber habe Bedenken, dass wenn ich die beiden Tabellen in irgendeiner Form zusammenführe die Ids durcheinandergeworfen werden und die Artikel nicht mehr auf der Seite sind.

Diese Angst ist unbegründet. Ein JOIN, in einem SELECT verwendet, verspeist keine Daten. Generell: ein Select verändert keine Daten (mal von Funktionen abgesehen, die Du vielleicht aufrufst, die dann Daten verändern. Aber das ist was anderes, das erkläre ich vielleicht mal in der nächsten Maus)

Also, soweit Deine Erklärung sinnvoll ist steckst Du Deine Revies in eine extra Tabelle, die Beziehung zu Deinen Artikel erfolgt über einen Fremdschlüssel.

Du hast eine Tabelle Artikel, die vielleicht so aussieht:

Code:
test=# create table artikel (id int primary key, name text);
CREATE TABLE

Das hast Du. Du brauchst nun eine Tabelle für die Reviews, diese könnte so aussehen:

Code:
test=# create table reviews(id serial primary key, artikel_id int references artikel, review text);
CREATE TABLE

Um nun für alle Artikel alle Reviews zu erhalten sagst Du einfach:

Code:
test=# select a.name, array_agg(r.review) from artikel a left join reviews r on a.id=r.artikel_id group by a.name;
 name | array_agg
------+-----------
(0 rows)

und bekommst ein Array je Artikel, in dem alle Reviews stehen.

Das Beispiel ist mit PostgreSQL gemacht, in MySQL willst Du group_concat() oder sowas verwenden.
 
Zurück
Oben