Re: [SQL] Odd "problem", not sure if there is a solution ....
От | secret |
---|---|
Тема | Re: [SQL] Odd "problem", not sure if there is a solution .... |
Дата | |
Msg-id | 36FBE92D.B5E2BB93@kearneydev.com обсуждение исходный текст |
Ответ на | Odd "problem", not sure if there is a solution .... (The Hermit Hacker <scrappy@hub.org>) |
Список | pgsql-sql |
The Hermit Hacker wrote: > am working up a database for client that contains answers for online > testing...right now, the 'tables' look like: > > userid Q1 Q2 Q3 Q4 Q5 Q6 Q7 etc > > I want to change it so that its more generic, as: > > userid question_no answer > > so that instead of one row per user, there are X rows... > > the problem is that, somehow, I want the client to be able to view the > results as the first format (ie. one line per user) with it being stored > as multiple lines per user... > > Possible? > > Marc G. Fournier ICQ#7615664 IRC Nick: Scrappy > Systems Administrator @ hub.org > primary: scrappy@hub.org secondary: scrappy@{freebsd|postgresql}.org Sure it's possible, if you can live with the constrant that every person must answer every question... (Else that person will kind of 'disappear' <cough>): CREATE TABLE q ( person int4, -- Person ID# q int4, -- Question # a int4 ) -- Answer ftc=> select * from q where q in (1,2); person|q| a ------+-+-- 1|1| 1 1|2| 1 2|1|21 2|2|22 (4 rows) SELECT q1.person, q1.a, q2.a FROM q as q1, q as q2 WHERE q1.person=q2.person AND q1.q = 1 AND q2.q = 2 ; person| a| a ------+--+-- 1| 1| 1 2|21|22 (2 rows) Your probably want to rename "a" to a1 and a2, but you can expand this to N questions... The performance will suck if your table is pretty big, so I'd arrange to move things to a history file every so often... Keep in mind people will disappear if they are missing the answer to any question. David Secret MIS Director Kearney Development Co., Inc.
В списке pgsql-sql по дате отправления: