Einzelnen Beitrag anzeigen

Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#8

AW: MySQL: Limited Join?

  Alt 10. Dez 2013, 13: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 14:47 Uhr)
  Mit Zitat antworten Zitat