Hrm, ich bin mir nicht sicher, ob ich Dich richtig verstanden habe...
Ich erzeuge eine Tabelle:
[code]
test=# create table xorem(id serial primary key, kategorie text, frage text);
CREATE TABLE
test=*# insert into xorem (kategorie , frage) select 'Kategorie ' || k::text, 'Frage ' || random()::text from generate_series(1,12)k cross join generate_series(1,1000) x;
INSERT 0 12000
[/code]
Aus dieser willst Du jetzt je Kategorie eine zufälllige Frage?
[code]
test=*# with fragen as (select distinct on (kategorie) id from xorem order by kategorie, random()) select * from xorem where id in (select id from fragen);
id | kategorie | frage
-------+--------------+---------------------------
103 | Kategorie 1 | Frage 0.6848331529214562
1750 | Kategorie 2 | Frage 0.6909608059359478
2155 | Kategorie 3 | Frage 0.18357568343245134
3261 | Kategorie 4 | Frage 0.8703990607338667
4624 | Kategorie 5 | Frage 0.08257242582308422
5307 | Kategorie 6 | Frage 0.5904962323190546
6681 | Kategorie 7 | Frage 0.08823807862579969
7830 | Kategorie 8 | Frage 0.5842377289998701
8727 | Kategorie 9 | Frage 0.04882467962382009
9822 | Kategorie 10 | Frage 0.03511003825811443
10101 | Kategorie 11 | Frage 0.4164879394115033
11738 | Kategorie 12 | Frage 0.47849772675170144
(12 rows)
test=*# with fragen as (select distinct on (kategorie) id from xorem order by kategorie, random()) select * from xorem where id in (select id from fragen);
id | kategorie | frage
-------+--------------+----------------------------
152 | Kategorie 1 | Frage 0.7035299134539024
1291 | Kategorie 2 | Frage 0.9563267853614263
2347 | Kategorie 3 | Frage 0.9631845908749312
3029 | Kategorie 4 | Frage 0.6403800045043582
4819 | Kategorie 5 | Frage 0.41677167204903753
5318 | Kategorie 6 | Frage 0.1478997584047086
6490 | Kategorie 7 | Frage 0.4741054519339549
7662 | Kategorie 8 | Frage 0.054544677618441284
8788 | Kategorie 9 | Frage 0.26123879787324356
9643 | Kategorie 10 | Frage 0.8050594060279366
10979 | Kategorie 11 | Frage 0.5324426753242051
11286 | Kategorie 12 | Frage 0.6229950722375186
(12 rows)
test=*#
[/code]
Paßt das? Ist aber kein MySQL...