Losowanie

0

Jak mogę zrobić losowanie pytań i odpowiedzi. Mam jedną tabelkę, która ma 3 pola (id, pytanie, typ), gdzie typ odpowiada nazwie kolumny z drugiej tabelki odnosnie klientów.
Musze wylosować pytanie i odpowiedź z drugiej tabeli np Imie Ojca i w drugiej mam dane danego użytkownika.

Próbowałem coś w ten deseń, ale za bardzo nie znam sql.

  Declare @TypPytania varchar(50);
  Select * from(
 Select Top 3  Pytanie, @TypPytania = Typ From Pytania
    ORDER BY NewId()) x
    Union
   select @question from Users where Id = 1
1

Ale, ze wjednym zapytanu?
To wybiera 3 losowe pytania:

SELECT Top 3  
    Pytanie
   , Typ 
FROM 
    Pytania
ORDER BY 
    NewId()

Jeżeli kolumna typ ma w wartości nazwę komórki z drugiej tabeli to możesz zrobić unpivota na tabeli users, tylko przed zrobieniem unpivota musisz mieć wszystkie kolumny tego samego typu.

Wtedy możesz zrobić np. tak:


with usersTYPY as (
    select 
       id
       ,cast(imie as varchar(10)) imie
       ,cast(nazwisko as varchar(10)) nazwisko
       ,cast(wiek as varchar(10)) wiek
    from 
       users
), usersUP as (
    select 
      ID
      ,typ
      ,Odpowiedz
    from 
       usersTYPY
    unpivot
    (
       odpowiedz
       for typ in (imie,nazwisko,wiek)
    ) unpvt
)

select top 3
    p.pytanie
    ,o.odpowiedz
from 
    pytania p
    inner join usersUP o on p.typ=o.typ and o.id=1
order by
    NEWID()

http://www.sqlfiddle.com/#!18/13335/1

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0