webForumDet fria alternativet
Logga in / Bli medlem

Left join

Databaser & SQL

13 svar · 314 visningar · startad av Sky

Medlem sedan maj 2003103 inlägg
Trådstart#1

Hej här är en sql fråga jag har gjort så långt jag kunnat men nu sedan går det åt pipan.

SELECT person.fnamn, person.enamn, arende.statusId, Count(arende.statusId) AS Antal
FROM person LEFT JOIN arende ON person.hl_kod = arende.hl_kod 
GROUP BY person.fnamn, person.enamn, arende.statusId;

Det jag vill göra är att som nu så visas arende.statusId men istället för det vill jag ha själva namnet till statusId:et som ligger i en tabell som heter just status. Dvs jag vill ha åt status.status. Det jag fastnar på är hur jag en till join så att tabellen status kommer med.

Hoppas ni hängde med i min förklaring. Det är en access databas.
:birp
Tack på förhand

/Robert

Medlem sedan mars 20025 907 inlägg
#2
SELECT person.fnamn, person.enamn, status.status, Count(arende.statusId) AS Antal
FROM person,status LEFT JOIN arende ON person.hl_kod = arende.hl_kod 
where arende.statusId = status.statusid
GROUP BY person.fnamn, person.enamn, arende.statusId;

?

Medlem sedan maj 2003103 inlägg
#3

ser ganska logiskt ut men jag får Syntax fel i JOIN-operation

Medlem sedan mars 20025 907 inlägg
#4

Försök 2:

SELECT person.fnamn, person.enamn, status.status, Count(arende.statusId) AS Antal
FROM person LEFT JOIN arende ON person.hl_kod = arende.hl_kod 
inner join status on arende.statusId = status.statusid
GROUP BY person.fnamn, person.enamn, arende.statusId;

?

Medlem sedan maj 2003103 inlägg
#5

följande fel :)

Syntax fel (operator saknas) i frågeuttrycket 'ON person.hl_kod = arende.hl_kod inner join status on arende.statusId = status.statusid'.

Medlem sedan juni 200032 967 inlägg
#6

Access fullkomligt avgudar parenteser, så prova att slänga parenteser runt det första joinvillkoret.

mvh

Medlem sedan maj 2003103 inlägg
#7

Provat lite olika men får då fel.

Syntaxfel i FROM instruktion och även när jag flyttar dem lite annorlunda i JOIN-operation.

Medlem sedan maj 2003103 inlägg
#8

Det här var ;( får den inte att funka.

Iaf skitsamma =)
Om jag vill ha ut följande:

Förnamn | Efternamn | AntalforStatus1| AntalforStatus2| AntalforStatus3 | antalforStatus4 osv

Jag har En tabell som heter Person, där fnamn och enamn finns. Relationen till arende är hl_kod.
Arende är min andra tabell där de olika ärendena finns. Sedan så har jag en tabell Status där bara statusID och namn finns. StatusId finns även så klart i arende tabellen. Hur skall jag göra för att få ut önskat resultat?

mvh Robert

Medlem sedan juni 200032 967 inlägg
#9

Har du provat att använda Access för att bygga frågan? Då får du parenteser på rätt ställe.
Annars kan man ju försöka utan att använda join-uttryck:

SELECT person.fnamn, person.enamn, status.status, Count(arende.statusId) AS Antal
FROM person, arende, status WHERE person.hl_kod = arende.hl_kod 
AND arende.statusId = status.statusid
GROUP BY person.fnamn, person.enamn, arende.statusId

(Jag har utgått ifrån SQL-frågan i Peeers inlägg).

Mvh

Medlem sedan maj 2003103 inlägg
#10

Tack Anders den funkade bra. Men det är bara det att då får jag bara med om de har just haft något ärende med just den statusen och inte de övriga. Sedan så vet jag inte hur man gör för att göra left joins i access via att bygga den grafiskt.

Medlem sedan juni 200032 967 inlägg
#11

Prova om operatorn *= stöds i access. *= blir left outer join om jag inte missminner mig.

Lek lite med frågeguiden i Access så lär du dig säkert. ;)

Jag använder inte access, så jag kan nog tyvärr inte hjälpa dig med mer Access-specifika ting.

Mvh

Medlem sedan maj 2003103 inlägg
#12

Du har inte något tips på hur jag skall göra för den senare frågan jag gjorde. Åttonde inlägget.
Som jag tänker nu kommer jag göra att man gör alias av tabellen status 7 gånger för jag har sju olika statusId. men det känns inte speciellt smart alls.

Medlem sedan dec. 200012 464 inlägg
#13
SELECT person.fnamn, 
    person.enamn, 
    status.status, 
    Count(arende.statusId) AS Antal
FROM (person LEFT JOIN arende 
ON person.hl_kod = arende.hl_kod)
 left join status 
ON arende.statusId = status.statusid
GROUP BY person.fnamn, person.enamn, arende.statusId

=* och *= finns inte i Access.

Medlem sedan maj 2003103 inlägg
#14

Tack LarsG för den fina sql satsen och förklaringen, men :) Nu blir det som så att det blir enbart tex
Pelle Nilson status1
Pelle nilson status3
Pelle nilson status4
Ingrid....osv
Dvs att det blir inte alla statusar
Pelle nilson status1
Pelle nilson status2
Pelle nilson status3
Pelle nilson status4
Pelle nilson status5

Hoppas du förstår vad jag menar.

/Robert

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