webForumDet fria alternativet

en till flera relation

Databaser & SQL

11 svar · 377 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Jag har följande (ungefär ivf):

tPermission :

PermissionID | Data1 | Data2
--------------------------------------------
1 | bla | bla

tPermissionRow :

ID | PermissionID | RowNo | To | From
----------------------------------------------
1 | 1 | 1 |some | some
2 | 1 | 2 |other|other

Alltså kan en Permission kan ha flera PermissionRow. I mitt fall (2 st)

Jag vill få ut följande :

Data1 | Data2 | To1 | From1 | To1 | To2

där to och from med siffror är respektive från raderna i tPermissionRow.

Hur görs detta?

Medlem sedan juni 200032 967 inlägg
#2

Om du vill få ut det på det sättet är du fel ute. Resultatet borde bli en post per permissionrow, inte fler kolumner.

mvh

Medlem sedan nov. 20022 355 inlägg
#3

Nej jag är inte fel ute! :)

Medlem sedan dec. 200012 464 inlägg
#4

Hantera det i presentationslagret, om du inte har access där du kan använda TRANSFORM.

Medlem sedan nov. 20022 355 inlägg
#5

LarsG skrev:

Hantera det i presentationslagret, om du inte har access där du kan använda TRANSFORM.

Finns det ingen lösning mha sql då?

Medlem sedan dec. 200012 464 inlägg
#6

Jo, men om du skall hantera godtyckligt antal rader så blir det lite komplicerat och det går inte med alla DBMS heller.

Medlem sedan nov. 20022 355 inlägg
#7

Nej, men om vi antar att det endast är två PermissionRow till en Permission.

Medlem sedan dec. 200012 464 inlägg
#8
select data1,data2, 
  r1.to as to1,r1.from as from1,
  r2.ro as to2,r2.from as from2
from tpermission p
 inner join tPermissionRow r1 on p.permissionid = r1.permissionid
 inner join tPermissionRow r2 on p.permissionid = r2.permissionid
where r1.rowNo = 1
and r2.rowNo = 2

heter kolumnerna from och to i verkligheten?

Medlem sedan nov. 20022 355 inlägg
#9

LarsG skrev:

heter kolumnerna from och to i verkligheten?

Hehe, nej det gör de inte :h
Ska testa koden så fort jag har en installerad sql-server!
Tack så mycket :bire

Medlem sedan juni 200032 967 inlägg
#10

För mig betyder "flera" inte "två".

Men om man alltid har ett bestämt antal är det klart att man kan få in allt i samma post genom att joina in samma tabell x antal gånger.

Mvh

Medlem sedan nov. 20022 355 inlägg
#11

@nders skrev:

För mig betyder "flera" inte "två".

Men om man alltid har ett bestämt antal är det klart att man kan få in allt i samma post genom att joina in samma tabell x antal gånger.

Mvh

Jo, kan medge att jag uttryckte mig lite fel. Men det borde ju bara vara att bygga upp sql-strängen dynamiskt för att kunna ta emot fler en till flera relation, om man gör en select count på PermissionsRow först och utifrån resultatet loopar fram satsen. Kanske inte korrekt?

Frågan LarsG gav, är den frågan korrekt för access? (sitter och testar lite mot den) har detta:

select data1,data2, 
  r1.Tto as to1 ,r1.Ffrom as from1,
  r2.Tto as to2 , r2.Ffrom as from2
from Permissions p
 inner join PermissionsRow r1 on p.permissionid = r1.permissionid
 inner join PermissionsRow r2 on p.permissionid = r2.permissionid

where r1.rowNo = 1 and r2.rowNo = 2

Får syntax fel när jag har två join (fungerar ju meden)

Medlem sedan dec. 200012 464 inlägg
#12
select data1,data2, 
  r1.Tto as to1 ,r1.Ffrom as from1,
  r2.Tto as to2 , r2.Ffrom as from2
from (Permissions p
 inner join PermissionsRow r1 on p.permissionid = r1.permissionid)
 inner join PermissionsRow r2 on p.permissionid = r2.permissionid
where r1.rowNo = 1 and r2.rowNo = 2
389 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
130 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)