webForumDet fria alternativet

UserId från 2 tabeller

9 svar · 249 visningar · startad av hawkman

hawkmanMedlem sedan juni 2000125 inlägg
#1

Hej,

Behöver få ut UserId från 2 tabeller med 1 fråga. Går det? :q

Tabellerna ser ut så här:

[U]RegionResponsible[/U]
RegionResponsibleId
UserId
RegionId

[U]CountryResponsible[/U]
CountryResponsibleId
UserId
CountryId

RegionId fås ut genom att fråga

SELECT RegionId FROM Country WHERE CountryId = 8

Frågan är om jag kan få ut alla användare som finns antingen i RegionResponsible eller CountryResponsible genom ett CountryId, t ex 8, med endast en sql-sats? Har inga problem att få ihop det med två satser, men det vore smidigt med en :h
Gäller en access db.

Hälsningar
Håkan

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select userid from regionresponsible
union all
select userid from countryresponsible
hawkmanMedlem sedan juni 2000125 inlägg
#3

Hej,

Jag vill gå in med ett countryid och få ut userid.
Pseudokod:

select userid from regionresponsible
union all
select userid from countryresponsible
WHERE
countryresponsible.countryid = 8 AND
regionresponsible.regionid in (SELECT RegionId FROM Country WHERE CountryId = 8)

Hoppas det blev lite klarare nu :)
Det vore dessutom grymt om man bara fick en förekomst av userid även om det finns flera...!

/Håkan

LarsGMedlem sedan dec. 200012 464 inlägg
#4
select userid from regionresponsible
where regionid in (select regionid from country 
where countryid = 8)
union 
select userid from countryresponsible
where countryid = 8
hawkmanMedlem sedan juni 2000125 inlägg
#5

Perfekt! Tackar..!

hawkmanMedlem sedan juni 2000125 inlägg
#6

Ok, fortsättning ;)

När jag fått ut mitt userid enligt ovan vill jag plocka ut motsvarande namn från min user-tabell...

[U]User[/U] 
UserId
UserCategoryId
FirstName
LastName

SELECT FirstName, UserCategory 
FROM User, UserCategory 
WHERE User.UserId = ...
AND User.UserCategoryId = UserCategory.UserCategoryId

Vad sägs om det? :e

/Håkan

LarsGMedlem sedan dec. 200012 464 inlägg
#7
SELECT FirstName, UserCategory 
FROM User, UserCategory 
WHERE User.UserId in (
select userid from regionresponsible
where regionid in (select regionid from country 
where countryid = 8)
union all
select userid from countryresponsible
where countryid = 8)
AND User.UserCategoryId = UserCategory.UserCategoryId
hawkmanMedlem sedan juni 2000125 inlägg
#8

Hej LarsG,

Testade med det innan, men det funkar inte. Får (i MS Access)

This operation is not allowed in subqueries

Går det att lösa på annat sätt eller är det helt kört i MS Access?

/Håkan

LarsGMedlem sedan dec. 200012 464 inlägg
#9
SELECT FirstName, UserCategory 
FROM User inner join UserCategory 
on User.UserCategoryId = UserCategory.UserCategoryId
WHERE User.UserId in (
    select userid from regionresponsible
     where regionid in (
         select regionid from country 
          where countryid = 8))
or User.UserId in (
    select userid from countryresponsible
     where countryid = 8)
hawkmanMedlem sedan juni 2000125 inlägg
#10

Funkar utmärkt!

/Håkan

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)