Thread esskar in der SQL welt (27 answers)
Opened by esskar at 2006-09-26 10:47

esskar
 2006-12-17 13:35
#34728 #34728
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
okay, schonaml danke.
nochwas:
ich muss hier an schlechtem db design vorbei programmieren

ich hab eine liste mit usern. jeder kann bis zu 5 wünsche haben.
die wünsche werden leider so in einer tabelle gespeichert:

user_id | wunsch1 | wunsch2 | wunsch3 | wunsch4 | wunsch5

hier das CREATE SQL dazu
Code: (dl )
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `wuensche` (
`user_id` int(11) NOT NULL default '0',
`wunsch1` varchar(255) default NULL,
`wunsch2` varchar(255) default NULL,
`wunsch3` varchar(255) default NULL,
`wunsch4` varchar(255) default NULL,
`wunsch5` varchar(255) default NULL,
`last_update` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1


ist auch erstmal nicht zu ändern.
ich bräuchte jetzt ein SELECT, dass mir den user pro ausgefüllten wunsch auflistet.
dafür bau ich mir dann eine view.

also, wenn z.b. user 1 fünf wünsche gespeichert hat, dann wird user 1 fünf-mal in der view gelistet. in der view sollen dann die felder aus der user tabelle stehen + einzusetzliches feld mit namen wunsch, wo dann der jeweilige wunsch steht.

geht das irgendwie. ich hab ein problem mit dem select, dass momentan so aussieht.

[sql]SELECT u.*, w.wunsch1 AS wunsch FROM user u JOIN ( wuensche w ) ON ( w.user_id = u.id ) ORDER BY u.id;
[/sql]

das das nicht genügt, ist mir logisch klar.
die frage ist, wie ich das jetzt so hinbekomme, dass ich fuer winsch2 - 5 auch eine zeile hinbekomme!\n\n

<!--EDIT|esskar|1166356114-->

View full thread esskar in der SQL welt