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