insert into mit subquery

insert into mit subquery

am 17.01.2007 14:04:06 von Christian Schmidt

Hallo,

folgende Struktur

table1
===========
user(int)
content(text)

table2
===========
user-key(int)
user-hash(text)

table3
===========
table3-key(auto_increment)
user-key(int)
content(text)


Ich möchte 'content' aus table1 in table3 kopieren. Die Zuordnung zum
User geht nur indirekt über table2. Und zwar ist
user-hash=md5(table1.user-id).

Sinn des ganzen ist, daß man über table3 nicht (direkt) herausfinden
kann, welcher user dahinter steckt.

INSERT INTO table3
SELECT
NULL,
(SELECT t2.user-key
FROM table1 t1_2, table2 t2
WHERE
t1.user = t1_2.user AND
t2.user-hash = MD5(t1_2.user)),
t1.content
FROM
table1 t1, table2 t2;

Als Fehler von mySQL kommt
ERROR 1242 (21000): Subquery returns more than 1 row

Was das bedeutet ist mir klar, nur wie muss ich meine Subquery ändern,
damit nur eine Zeile rauskommt?

Chris

Re: insert into mit subquery

am 17.01.2007 14:11:47 von Christian Schmidt

Christian Schmidt schrieb:

> INSERT INTO table3
> SELECT
> NULL,
> (SELECT t2.user-key
> FROM table1 t1_2, table2 t2
> WHERE
> t1.user = t1_2.user AND
> t2.user-hash = MD5(t1_2.user)),
> t1.content
> FROM
> table1 t1, table2 t2;
>
> Als Fehler von mySQL kommt
> ERROR 1242 (21000): Subquery returns more than 1 row

habs gelöst bekommen, in der subquery war ein fehler und deshalb das
ergebnis nicht eindeutig.

Chris