webForumDet fria alternativet
Logga in / Bli medlem

COUNT i JOIN

Databaser & SQL

5 svar · 260 visningar · startad av K@llen

Medlem sedan mars 20032 667 inlägg
Trådstart#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

Medlem 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
Medlem sedan mars 20032 667 inlägg
#3

Tackar ödmjukast! :)

Medlem sedan mars 20032 667 inlägg
#4

/Bort red

Medlem 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. :(

Medlem 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.

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