Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zusammenführen zweier Tabellen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Scheuerbein, 27 April 2016.

  1. Scheuerbein

    Scheuerbein Neuer Benutzer

    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!
     
  2. ukulele

    ukulele Datenbank-Guru

    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...
     
  3. Scheuerbein

    Scheuerbein Neuer Benutzer

    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.
     
  4. ukulele

    ukulele Datenbank-Guru

    Wie sehen denn die Tabellendefinitionen der beiden Tabellen aus?
     
  5. akretschmer

    akretschmer Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden