Relationstabellen zusammenführen

struunz88

Neuer Benutzer
Beiträge
3
Hallo,

habe ein Problem mit meiner DB ich hab auch schon nach Lösungen gesucht und rum probiert aber irgendwie klappt es nicht so wie es soll.

Folgendes Problem ich habe eine Datenbank mit 2 Tabellen, die ich zusammenfügen möchte.

ximg.php


Ich muss also die Passende ID und den Titel aus der ersten Tabelle in die zweite einfügen und da klappt es bei mir nicht warum auch immer :(

Hoffe es hat einer ne Lösung
Danke schon mal :)
 
Werbung:
Gähn.

Code:
est=*# create table t2 (id int primary key, t text);
CREATE TABLE
test=*# create table t1 (id int, titel text, key_t2 int references t2);
CREATE TABLE
test=*# copy t2 from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 388  interessantes zu hans
>> 178  interessantes zu peter
>> 111  interessantes zu inge
>> \.
COPY 3
test=*# copy t1 from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1  hans  388
>> 2  peter  178
>> 3  inge  111
>> \.
COPY 3
test=*# select t2.id, t2.t, t1.id, t1.titel from t2 left join t1 on t2.id=t1.key_t2;
 id  |  t  | id | titel
-----+------------------------+----+-------
 388 | interessantes zu hans  |  1 | hans
 178 | interessantes zu peter |  2 | peter
 111 | interessantes zu inge  |  3 | inge
(3 rows)

beschäftige dich dringend mit Grundlagen wie z.B. Joins.
 
Also ich habe das jetzt mal gemacht bzw. nur den Teil
Code:
select t2.id, t2.t, t1.id, t1.titel from t2 left join t1 on t2.id=t1.key_t2

Aber wenn ich das so mache zeigt er mir zwar an wie es aussehen soll aber die Original Tabelle wird nicht verändert und wenn ich das richtig sehe steht oben auch CREATE TABLE .... genau das möchte ich nicht da es zu lange dauern würde. Das sind ca. 4 Mio Einträge mit knapp 18 GB in der zweiten Tabelle mit dem Text . Deswegen soll da nur die ID und Titelspalte eingefügt werden.
 
Die Create Table - Befehle bei mir dienen lediglich dazu, die Tabellen wie Du sie hast zu erstellen.

Warum willst Du die original Tabellen verändern? Du kannst Dir einen View erstellen, der auf der Abfrage basiert. Hättest Du eine richtige DB, so könntest Du auch einen materialized View erstellen. Du kannst auch eine neue Tabelle als Resultat erstellen - create table ... as ... Die Struktur einer solchen Tabelle wie von Dir gezeigt wäre aber auch Quatsch, die ID-Spalten in dieser wäre unnütz.
 
weil du es bist:

Code:
test=*# alter table t2 add column id_t1 int;
ALTER TABLE
test=*# alter table t2 add column titel_t1 text;
ALTER TABLE
test=*# select * from t1;
 id | titel | key_t2
----+-------+--------
  1 | hans  |  388
  2 | peter |  178
  3 | inge  |  111
(3 rows)

test=*# select * from t2;
 id  |  t  | id_t1 | titel_t1
-----+------------------------+-------+----------
 388 | interessantes zu hans  |  |
 178 | interessantes zu peter |  |
 111 | interessantes zu inge  |  |
(3 rows)
test=*# update t2 set id_t1=t1.id, titel_t1 = t1.titel from t1 where t2.id=key_t2;
UPDATE 3
test=*# select * from t2;
 id  |  t  | id_t1 | titel_t1
-----+------------------------+-------+----------
 388 | interessantes zu hans  |  1 | hans
 178 | interessantes zu peter |  2 | peter
 111 | interessantes zu inge  |  3 | inge
(3 rows)

Über Sinn oder Unsinn kannst selber entscheiden.
 
Hm gibt immer ne Fehlermeldung ... hab jetzt gedacht ich hab mich vertippt oder sonst was nicht beachtet deswegen habe ich auch mal die 2 Tabellen so angelegt weil die ja bei mir eigentlich andere Namen und son zeugs haben aber auch dann :(

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from t1 where t2.id=key_t2' at line 1

Was du eben mit dem View meintest ... kann ich den abspeichern und nachher wie auf eine ganz normale Tabelle zugreifen, also auch über PHP ? Weil das könnte schon mal ein anderes Problem lösen :D
 
Werbung:
Kann sein, daß die von mir gezeigten SQL-Befehle unter MySQL nicht funktionieren. Das ist durchaus normal, ich verwende PostgreSQL, MySQL kann gefühlt zu 99% nicht das, was in PostgreSQL geht.

Ein VIEW ist ein 'Alias' für ein SQL. Beim Zugriff auf den View wird das zugrunde liegende SQL ausgeführt. Ausnahme: materialised Views. Kann MySQL icht.
 
Zurück
Oben