Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Count från två tabeller

Postades av 2005-10-27 08:42:53 - David Hägg, i forum sql-server/msde, Tråden har 11 Kommentarer och lästs av 711 personer

Hej,

Har tre tabeller och vill få ut antal poster i de två senare där vissa kriterier matchar den första.

<code>
SELECT tF.*,
(SELECT COUNT(*) FROM tblforumthreads WHERE ForumId = tF.Id) AS ThreadCount
(SELECT COUNT(*) FROM tblforumposts WHERE ThreadId = tT.Id) AS PostCount

FROM tblforums AS tF

LEFT JOIN tblforumthreads AS tT
ON tF.Id = tT.ForumId

WHERE Visible = (1)

ORDER BY ForumName
</code>

Det jag vill är att tF.Id skall vara unikt, som det är nu returneras ett Id för varje tT.Id som finns.


Mvh David


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 08:59:20 - Daniel Åsberg

Går det inte utan subselects?
Chansning:
<code>
SELECT tF.ForumName, COUNT(tf.id), COUNT(tt.id)
FROM tblforums tf LEFT JOIN tblforumthreads tt ON tf.Id = tt.forumid
LEFT JOIN tblforumposts tp ON tp.threadid = tt.id
WHERE visible = 1
GROUP BY ForumName
</code>


Svara

Sv:Count från två tabeller

Postades av 2005-10-27 09:13:55 - David Hägg

Jo det borde det göra,

Problemet är att Count() inte räknar rätt för min del.
Exempelvis innehåller tabellen tT endast 2 poster som har ForumId = 1, men count returnerar 8.
tP innehåller 7 poster som alla har ThreadId = 1

Förenklat ser det ut så här:

tF:
<code>
id | ForumName
-------------------------------
1 Test
2 Rad två
3 Rad tre
</code>

tT:
<code>
id | ForumId
-------------------------------
1 1
2 1
</code>

tP:
<code>
id | ThreadId
-------------------------------
1 1
2 1
3 1
4 1
5 1
6 1
7 1
</code>


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 09:32:22 - Daniel Åsberg

Så här skulle iofs mitt exempel se ut:
<code>
SELECT tF.ForumName, COUNT(tt.id), COUNT(tp.id)
FROM tblforums tf LEFT JOIN tblforumthreads tt ON tf.Id = tt.forumid
LEFT JOIN tblforumposts tp ON tp.threadid = tt.id
WHERE visible = 1
GROUP BY ForumName
</code>

Vad ger det för resultat?


Svara

Sv:Count från två tabeller

Postades av 2005-10-27 09:38:19 - David Hägg

Ja, jag såg att det var lite fel inuti count() men det ger ändå inte rätt resultat.

Frågan returnerar:
<code>
Id | Count1 | Count2
------------------------
1 8 7
2 0 0
</code>

Har du någon aning om varför?


Mvh David


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 09:46:31 - Lars Berg

Varför join med forumThreads? I vilken tabell ligger kolumnen visible?

Att använda subselect är rätt lösning, att försöka med join som föreslagits i andra inlägg går inte.


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 09:46:59 - Daniel Åsberg

Inte en aning=)

Vad får du för resultat om du kör:
<code>
SELECT tF.ForumName, tt.id, visible
FROM tblforums tf, tblforumthreads tt
WHERE tf.Id = tt.forumid
</code>


Svara

Sv:Count från två tabeller

Postades av 2005-10-27 09:55:27 - David Hägg

<code>
ForumName | Id | visible
-----------------------------------------
Föredrag 1 1
Föredrag 2 1
</code>


Kolumnen visible ligger i tblforums tabellen och är av datatypen tinyint. 1/0


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 11:43:03 - Andreas Hillqvist

Hur ser din ASP sida ut?
Jag tror jag kan lösa det alternativt med en datashape.


Svara

Sv:Count från två tabeller

Postades av 2005-10-27 12:11:54 - David Hägg

Jag löste det med kod istället.
Gillar dock generellt att skriva så bra frågor mot DB som möjligt.

Plockade ut id och körde separat count(*) på tblforumthreads och tblforumposts.

Tack ändå för hjälpen!


Svara

Sv: Count från två tabeller

Postades av 2005-10-27 13:08:18 - Lars Berg

<code>
SELECT tF.*,
(SELECT COUNT(*) FROM tblforumthreads WHERE ForumId = tF.Id) AS ThreadCount
(SELECT COUNT(*) FROM tblforumposts
WHERE ThreadId in (
SELECT id
FROM tblforumthreads
WHERE forumid = tf.id) AS PostCount
FROM tblforums AS tF
WHERE Visible = 1
ORDER BY ForumName
</code>


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
5 766
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies