webForumDet fria alternativet

Left join

13 svar · 314 visningar · startad av Sky

SkyMedlem sedan maj 200388 inlägg
#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

PeeerMedlem sedan mars 20025 362 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;

?

SkyMedlem sedan maj 200388 inlägg
#3

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

PeeerMedlem sedan mars 20025 362 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;

?

SkyMedlem sedan maj 200388 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'.

@ndersMedlem sedan juni 200026 914 inlägg
#6

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

mvh

SkyMedlem sedan maj 200388 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.

SkyMedlem sedan maj 200388 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

@ndersMedlem sedan juni 200026 914 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

SkyMedlem sedan maj 200388 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.

@ndersMedlem sedan juni 200026 914 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

SkyMedlem sedan maj 200388 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.

LarsGMedlem sedan dec. 200012 465 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.

SkyMedlem sedan maj 200388 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

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb