Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
Delphi 2010 Professional
|
AW: MySQL: Limited Join?
10. Dez 2013, 14:05
Danke rapante, das wäre eine durchaus akzeptable Lösung
Code:
select A.id,
(select id from B order by rand() limit 1)b1,
(select id from B where not id in(b1) order by rand() limit 1)b2,
(select id from B where not id in(b1,b2) order by rand() limit 1)b3,
(select id from B where not id in(b1,b2,b3) order by rand() limit 1)b4,
(select id from B where not id in(b1,b2,b3,b4) order by rand() limit 1)b5,
from A
Einziges gravierendes Problem:
Trotz der Where treten doppelte Werte auf, als b1 und b2 im gleichen Datensatz haben z.B. den Wert 5, was aber nicht sein soll.
edit: baumina, leider nicht
edit2: hab hier mal das Problem geschildert: http://stackoverflow.com/questions/2...select-not-wor
Und hab mittlerweile auch eine Lösung:
Code:
select id, b1, b2, b3, b4, b5
from (
select A.id,
@ := (select GROUP_CONCAT(DISTINCT id ORDER BY RAND()) AS ids from B),
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 1), ',', -1) b1,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 2), ',', -1) b2,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 3), ',', -1) b3,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 4), ',', -1) b4,
SUBSTRING_INDEX(SUBSTRING_INDEX(@, ',', 5), ',', -1) b5
from A
) t
Etwas anderes Ergebnis, aber damit kann ich arbeiten
Martin Weber Ich bin ein Rüsselmops
Geändert von Angel4585 (10. Dez 2013 um 15:47 Uhr)
|