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


Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 08:19:52 - Tommy Leandersson, i forum mysq, Tråden har 9 Kommentarer och lästs av 1275 personer

Jag har denna lilla SQL-sats som räknar ihop antalet icke lästa blogg-inlägg:
SELECT COUNT(id) FROM tbl_blogg WHERE id NOT IN (SELECT blogg_id FROM tbl_blogg_reads WHERE user = 'username')

Som ni kan se så har jag en SELECT-sats i min IN-sats som inte är riktig effektiv, men fyller sin funktion.

Hur kan man skriva om detta med hjälp av JOIN?

Har provat med:
SELECT COUNT(id) FROM tbl_blogg LEFT JOIN tbl_blogg_reads ON tbl_blogg.id = tbl_blogg_reads.id WHERE user = 'username'

Men då får jag bara ut alla poster som är lästa, utan jag vill ha de som är olästa... så att alla ID i tbl_blogg som inte finns med i tbl_blogg_reads vill jag då ha ut.


Svara

Sv: Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 09:42:36 - Niklas Jansson

SELECT COUNT(id) FROM tbl_blogg LEFT JOIN tbl_blogg_reads ON tbl_blogg.id = tbl_blogg_reads.id WHERE user <> 'username'

där du får byta ut <> till det som är rätt, != eller ~= eller vad det kan vara. Eller för all del:

SELECT COUNT(id) FROM tbl_blogg LEFT JOIN tbl_blogg_reads ON tbl_blogg.id = tbl_blogg_reads.id WHERE not user = 'username'


Svara

Sv:Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 10:04:10 - Tommy Leandersson

Så lätt är det inte... :)

Jag måste plocka ut för en viss individ, om jag kör != 'username' så väljer den bort alla som är 'kalle' men jag kommer få med mig andra som läst inlägget oxå...


Svara

Sv: Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 10:06:22 - Johan Djupmarker

Det är lite svårt att lösa detta utan subselect. Kolla om detta är snabbare än ditt förslag:

SELECT COUNT(id) FROM tbl_blogg LEFT JOIN (SELECT id, user FROM tbl_blogg_reads WHERE user = 'username') AS r ON tbl_blogg.id = r.id WHERE r.user IS NULL

Tror man behöver joina in en tabell med alla användare för att lyckas utan en subselect... har du någon sådan tabell?

/Johan


Svara

Sv:Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 10:21:26 - Tommy Leandersson

Jag har en "vanlig" omskriven membershipprovider efter en artikel på Pellesoft...


Svara

Sv:Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 10:22:03 - Niklas Jansson

Aha, nu fattar jag. Sorry med den. (Och förslaget när jag fattade problemet visade sig vara identiskt med Johans...)

Men då är frågan hur tung queryn är, har du verkligen så stora prestandaförluster där?
Det känns som att joina in hela användartabellen borde bli tyngre än en subselect.

Har de flesta läst det mesta kanske det är vettigare att vända på det; spara "unread" istället för "read"?


Svara

Sv: Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 10:32:56 - Jan Bulér

Vet inte om det funkar med JOINS men detta kanske är en lite effektivare fråga än din ursprungliga. Har dock inte testat den i mysql utan bara i Access.

Fråga som listar antalet ej lästa för respektive user.

SELECT tbl_blogg_reads.username, ((SELECT count(id) FROM tbl_blogg)-Count([bloggId])) AS NoReads
FROM tbl_blogg_reads
GROUP BY tbl_blogg_reads.username;


Fråga som visar ej lästa för en specifik användare

SELECT tbl_blogg_reads.username, ((SELECT count(id) FROM tbl_blogg)-Count([bloggId])) AS NoReads
FROM tbl_blogg_reads
GROUP BY tbl_blogg_reads.username
HAVING (((tbl_blogg_reads.username)="myUserName"));

eller utqan att returnera username

SELECT ((SELECT count(id) FROM tbl_blogg)-Count([bloggId])) AS NoReads
FROM tbl_blogg_reads
WHERE (((tbl_blogg_reads.username)="A"));


Svara

Sv:Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 11:09:44 - Tommy Leandersson

Denna fungerar utämrkt...
SELECT COUNT(id) FROM tbl_blogg LEFT JOIN (SELECT id, user FROM tbl_blogg_reads WHERE user = 'username') AS r ON tbl_blogg.id = r.id WHERE r.user IS NULL

Varför jag inte vill köra med Subquery är efter denna artikel:
http://www.aspsidan.se/default.asp?page=readArticle&artId=615

Men det kanske inte är hållbart i alla lägen att det är bättre med JOIN... :)


Svara

Sv: Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 11:39:18 - Johan Djupmarker

Ofta är det bättre med JOIN, men det enda sättet att vara helt säker på är att testa vilket som går fortast i det specifika fallet.

/Johan


Svara

Sv: Räkna icke lästa blogg-inlägg

Postades av 2008-03-19 12:11:33 - Håkan Borneland

Bortse från detta inlägg


/Håkan


Svara

Nyligen

  • 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
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 153
27 952
271 704
1 019
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