webForumDet fria alternativet

COUNT i JOIN

5 svar · 260 visningar · startad av K@llen

K@llenMedlem sedan mars 20032 667 inlägg
#1
-- message --
messageId (integer, räknare)
subject (text)
message (memo)
insertDate (datetime)

-- recievers --
messageId (integer)
fromId (integer)
toId (integer)

-- member --
memberId (integer, räknare)
fName (text)
lName (text)
SELECT me.messageId, me.subject, me.insertDate, mr.fName, mr.lName
FROM message me
INNER JOIN member mr
ON ( mr.memberId = me.fromId )
ORDER BY me.insertDate DESC

Jag skulle vilja ha med tabellen recievers i sql-frågan också. Jag vill joina tabellen recievers (med tabellen message) på fälten messageId, och räkna hur många poster som finns där fromId har ett visst värde. Med andra ord vill jag ha med en count(*) från tabellen recievers. Var och hur lägger jag in den?

dbms: access

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT me.messageId, me.subject, me.insertDate, mr.fName, mr.lName, (select count(*) from receivers
where messageid = me.messageid) as receivers
FROM message me
INNER JOIN member mr
ON ( mr.memberId = me.fromId )
ORDER BY me.insertDate DESC
K@llenMedlem sedan mars 20032 667 inlägg
#3

Tackar ödmjukast! :)

K@llenMedlem sedan mars 20032 667 inlägg
#4

/Bort red

K@llenMedlem sedan mars 20032 667 inlägg
#5

LarsG skrev:

SELECT me.messageId, me.subject, me.insertDate, mr.fName, mr.lName, (select count(*) from receivers
where messageid = me.messageid) as receivers
FROM message me
INNER JOIN member mr
ON ( mr.memberId = me.fromId )
ORDER BY me.insertDate DESC

Jag jublade nog lite tidigt, dessutom hade jag nog skrivit fel i min join ovan, dvs jag hade inte följt min egen tabellstruktur. :r

Följande rad är inte jämförbar:

ON ( mr.memberId = me.fromId )

för tabellen message har inget fromId, utan det är tabellen recievers som har den relationen. Detta innebär att jag inte kan joina tabellerna message och member på det viset.

Läget är enligt följande. 3 tabeller enligt ovan för en pm-tjänst. Man kan skicka ett meddelande till flera/många medlemmar. När jag presenterar mappen "skickat" för en medlem, då tänkte jag presentera följande:

* subject
* insertDate
* samt fName och lName (på mottagare) om det bara finns en mottagare. Finns det många mottagare ska jag istället skriva ut en länk till ett pop-upfönster där jag listar mottagarna.

Kortfattat:
Jag vill hämta subject och insertDate från tabellen message
Jag vill hämta fName och lName från tabellen member
Jag vill räkna antal mottagare i tabellen recievers där messageId har en relation med messageId i tabellen message

Oj, vad rörigt detta blev. :(

K@llenMedlem sedan mars 20032 667 inlägg
#6

Löste det genom att dra ner på presentationskraven lite. Presenterar nu enbart hur många mottagare som finns, dvs tog bort joinen med member-tabellen.

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