mehrere Werte in eine Spalte

maxikey

Erfahrenes Mitglied
Heyho,
Ich habe hier ein Problem:
Ich habe in mySQL eine Tabelle angelegt, in der immer wenn sich jemand auf meiner Seite registriert, eine neue Spalte für den neuen User angelegt wird. In dieser Tabelle werden dann in die jewailige Spalte per "INSERT INTO..." die Freunde (deren ID) des Users gesichert.
Das Problem ist das ich immer wenn ich einen 2ten Freund hinzufügen will folgende Meldung erscheint: Duplicate entry '' for key 1

Was habe ich falsch gemacht

DANKE IM VORAUS !

MFG Maxi
 
Hiho.


Das Feld dass dir als "duplicate" angezeigt wird hat einen UNIQUE-Wert. Der müßte raus. ;)


LG Ronin
 
Erstmal Danke für die schnelle Antwort...

Momentan versteh ich nichts mehr. Die Spalte hatte nämlich keinen UNIQUE-Wert. Noch komischer ist, dass ich gerade eine neue Spalte hinzugefügt habe (ALTER TABLE Freunde ADD COLUMN ($username char(250));) und dort schon jetzt dieselbe Meldung kommt. Dabei ist noch nichtmal eine Id gesichert.


Was soll ich tun?

MFG Maxi
 
ALTER TABLE
verändert die Tabelle an sich.

INSERT INTO
fügt einen Datensatz in die aktuelle Tabellenstruktur ein.

Das sind zwei paar Schuhe. Was genau ist nun das Problem?!


LG Ronin
 
Auf die Dauer wird das so wohl nichts. Deshalb möchte ich dir die Wiki zum Thema Datenbank-Normalisierung ans Herz legen und dir eine sinnvollere Alternative empfehlen:

SQL:
CREATE TABLE `benutzer` (
	`id`		INT UNSIGNED NOT NULL AUTO_INCREMENT,
	`name`		VARCHAR( 32 ) NOT NULL,
	`joindate`	DATETIME NOT NULL,
	PRIMARY KEY	( `id` ),
	UNIQUE KEY	( `name` )
);

CREATE TABLE `freunde` (
	`id`		INT UNSIGNED NOT NULL AUTO_INCREMENT, -- optional, falls ein einzelner Identifier benötigt wird
	`left`		INT UNSIGNED NOT NULL,
	`right`		INT UNSIGNED NOT NULL,
	PRIMARY KEY	( `id` )
	UNIQUE KEY	( `left`, `right` )
);

Als Abfrage aller Freunde eines Benutzers:
SQL:
SELECT
	`b`.`name`
FROM
	`freunde` AS `f`
LEFT JOIN
	`benutzer` AS `b` ON
	'Benutzer-ID' IN ( `f`.`left`, `f`.`right` ) AND
	-- sortiert die Reihen aus, in denen weder in der einen noch in der anderen Spalte der gesuchte Benutzer als Freund vermerkt ist
	`b`.`id` != 'Benutzer-ID'	
	-- gesuchte ID von Ergebnissen ausschließen
 
Zurück