Vinnaren i pepparkakshustävlingen!
2010-02-14, 13:00
  #1
Medlem
Hejsan!

Så jag hade en till fråga om SQL på lager. Det är så att jag vill lägga till poster i min tabell "Resultat" utifrån mina två tabeller "Användare" och "Ämne".
Jag gör ett litet exempel på vad jag vill göra

Så här ser tabellen Användare ut. Jag tar bara med de relevanta kolumnerna, och nu var det bara ID.
Kod:
ID
15
97

Såhär ser tabellen Ämne ut:
Kod:
ID
78
36
25

Och nu vill jag skicka in det här i min tabell Resultat. De kolumner som är relevanta i sammanhanget är ID, Användar_ID och Ämnes_ID.
För varje användare ska det skapas en post för varje ämne. Så som här i mitt exempel, så ska det bli sex poster i resultat-tabellen, eftersom 2 användare * 3 ämnen = 6. ID ska genereras av NEWID(), men jag väljer att i det här exemplet att bara använda en siffra. Blir lite jobbigt för er att läsa om jag har UniqueIdentifier.

Såhär vill jag att resultatet på fråga X ska bli.
Kod:

ID, Användar_ID, Ämnes_ID
1, 15, 78
2, 15, 36
3, 15, 25
4, 97, 78
5, 97, 36
6, 97, 25

Förstår ni vad jag vill göra?
Jag vill alltså ha hjälp med hur fråga X ska se ut.
Citera
2010-02-14, 13:36
  #2
Medlem
desmoduss avatar
Ta en titt på cross join.

http://msdn.microsoft.com/en-us/library/ms190690.aspx
Citera
2010-02-14, 13:54
  #3
Medlem
Funkar det att köra Cross Join kombinerat med Insert Into?
Citera
2010-02-14, 20:23
  #4
Medlem
kh31d4rs avatar
http://msdn.microsoft.com/en-us/library/ms190750.aspx

kanske kan vara av intresse?
Citera
2010-02-14, 20:31
  #5
Medlem
desmoduss avatar
Citat:
Ursprungligen postat av Doltnummer
Funkar det att köra Cross Join kombinerat med Insert Into?

Alla queries kan potentiellt agera källa för en insert-sats.

I ditt fall skulle det kunna bli något i stil med:

Kod:
insert into Result(ResultIDUserIDSubjectID)
select NewID(), u.Ids.Id
from User u
cross join Subject s 
Citera
2010-02-15, 12:26
  #6
Medlem
Tack! Nu fick jag till det
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback