webForumDet fria alternativet
Logga in / Bli medlem

SQL-fråga

Databaser & SQL

5 svar · 177 visningar · startad av Skarre

Medlem sedan apr. 20012 427 inlägg
Trådstart#1

Min SQL är riktigt rostig så jag undrar förstås om någon kan hjälpa mig att komponera en fråga som hämtar all information om en viss användare (från "users") samt all information om alla avdelningar han ingår i ("departments"). Tabellen som innehåller relationerna heter "deptrelations".

users
---------------------------------
| userid	| name		|
---------------------------------
| 1		| Skarre	|
---------------------------------

departments
---------------------------------
| departmentid	| name		|
---------------------------------
| 1		| Avdelning 1	|
---------------------------------
| 2		| Avdelning 2	|
---------------------------------

deptrelations
---------------------------------
| userid	| departmentid	|
---------------------------------
| 1		| 1		|
---------------------------------
| 1		| 2		|
---------------------------------
Medlem sedan dec. 200012 464 inlägg
#2
select users.*,department.*
 from users, departments,deptrelations
where users.userid = deptrelations.userid
and deptrelations.departmentid = departments.departmentid
and users.name = 'Skarre'
Medlem sedan apr. 20012 427 inlägg
#3

Dig kan man alltid lita på LarsG! :)

Medlem sedan apr. 20012 427 inlägg
#4

Jag lekte runt lite i Access och den gjorde automagiskt en SQL-fråga utifrån relationerna jag lagt in. Min fråga är om denna åstadkommer samma sak (jag tycker det ser ut så) och i sådana fall, vilken av dessa två frågor är att föredra, om det spelar någon roll.

SELECT personnel.*, departments.*
FROM personnel INNER JOIN (departments INNER JOIN deptrelations ON departments.departmentid = deptrelations.departmentid) ON personnel.userid = deptrelations.userid;
Medlem sedan dec. 20003 887 inlägg
#5

Du får samma resultat, men det är olika typer av JOINs.

Types of Joins

Medlem sedan dec. 200012 464 inlägg
#6

Jag skulle nog kalla det samma typ av join till och med.

Inner join syntaxen med mer än två tabeller i Access blir komplett oläslig och perverterad. Om jag skriver ett exempel för access så föredrar jag att ange villkoren i where men däremot om det gäller andra dbms så föredrar jag att använda join-syntax.

select users.*,department.*
 from users join deptrelations
   on  users.userid = deptrelations.userid
  join departments 
    on deptrelations.departmentid = departments.departmentid
where users.name = 'Skarre'

Ovanstående fungerar tyvärr alltså inte i Access/Jet.

261 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)