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


join med villkor

Postades av 2006-12-06 00:00:06 - Simon Dahlbacka, i forum databaser, Tråden har 9 Kommentarer och lästs av 1130 personer

Har två tabeller ungefär så här

Songs
---------------
SongId int PK
Name string

Played
---------------
PlayedId int PK (antagligen rätt onödig)
PlayedDate Datetime
PlayedSongId FK refererar Songs.SongId


Resultatet jag eftersträvar
Songs.Name, Count(PlayedDate)

MEN, jag vill enbart räkna rader där PlayedDate uppfyller ett visst villkor..

Några varianter jag testat

SELECT Name AS SongName, COUNT(PlayedDate) AS [Count] FROM Songs INNER JOIN Played ON SongId = PlayedSongId WHERE PlayedDate > 2006-09-01 GROUP BY SongId ORDER BY [Count] DESC, Name ASC LIMIT 10


SELECT Name AS SongName, COUNT(PlayedDate) AS [Count] FROM Songs INNER JOIN Played ON SongId = PlayedSongId  GROUP BY SongId HAVING PlayedDate > 2006-09-01 ORDER BY [Count] DESC, Name ASC LIMIT 10


SELECT Name AS SongName, COUNT(PlayedDate) AS [Count] FROM Songs INNER JOIN  (SELECT PlayedDate, PlayedSongId FROM Played WHERE PlayedDate > 2006-09-01) ON SongId = PlayedSongId GROUP BY SongId ORDER BY [Count] DESC, Name ASC LIMIT 10


Vad är det jag missar ?

PS. använder SQLite, men misstänker att detta inte är relevant.


Svara

Sv: join med villkor

Postades av 2006-12-06 00:47:10 - Robert Israelsson

Något sådant här kanske skulle funka..

SELECT Songs.[Name] AS SongName, Count(Played.PlayedDate) AS [Count]
FROM Played INNER JOIN Songs ON Played.PlayedSongID = Songs.SongID
WHERE Played.PlayedDate>#2006-09-01#
GROUP BY Songs.[Name];


Svara

Sv: join med villkor

Postades av 2006-12-06 09:22:10 - Andreas Hillqvist

SELECT Songs.Name AS SongName, [Count]
FROM Songs LEFT JOIN 
    (SELECT Played.PlayedSongId, COUNT(*) AS [Count] 
    FROM Played
    WHERE Played.PlayedDate > '2006-09-01'
    GROUP BY Played.PlayedSongId) ON Songs.SongId = PlayedSongId
ORDER BY [Count] DESC, Name ASC LIMIT 10


Svara

Sv:join med villkor

Postades av 2006-12-06 11:59:27 - Simon Dahlbacka

Robert: på vilket sätt skiljer ditt förslag sej från det jag redan testat..(förutom borttappad sortering)?

Andreas: eftersom även den ger fel resultat börjar jag misstänka att det är sqlite relaterat eller eventuellt provider relaterat.. Frågar i det forumet..

http://sqlite.phxsoftware.com/forums/thread/2646.aspx

Båda: och ja, jag använder mej av parameterized queries så hur jag skriver in datumet att jämföra med (borde ju inte ha) har nån betydelse..


Svara

Sv: join med villkor

Postades av 2006-12-06 12:37:03 - Andreas Hillqvist

Vad är det för resultat?


Svara

Sv:join med villkor

Postades av 2006-12-06 23:02:09 - Simon Dahlbacka

den ger fel resultat helt enkelt..

Men ser ut att bero på att eftersom Sqlite inte nativt stöder exempelvis datetimes så sparas dom som strängar.. sen när jag tittar i databasen så ser jag strängar i formatet d.M.yyyy hh:mm:ss vilket ju funkar "något suboptimalt" ifall dom jämförst som strängar...

Sen vems buggen är, det är ännu oklart..


Svara

Sv: join med villkor

Postades av 2006-12-06 23:29:47 - Niklas Jansson

Nog ett problem med SQLite. Det är en väldigt trevlig motor, men eftersom de har bestämt sig för att SQL-standarden är fel så blir mycket strängar. Det ska finnas något avsnitt i sqlite.org om just datum. Ska kolla om jag hittar.


Svara

Sv:join med villkor

Postades av 2006-12-06 23:33:30 - Niklas Jansson

Kika på:
http://www.sqlite.org/cvstrac/wiki?p=DateAndTimeFunctions


Svara

Sv: join med villkor

Postades av 2006-12-06 23:37:40 - Niklas Jansson

... och eftersom jag inte kollade på den tråden du länkade till inser jag nu att mina två förra poster var något onödiga. =)


Svara

Sv: join med villkor

Postades av 2006-12-07 09:27:14 - Andreas Hillqvist

Spara datum som integers för datum eller float för datum och tid istället?
Du brukar ofta representera datum som antalet dagar från ett visst datum.

Då kan du ställa effektiva frågor. Datumformat skall då heller inte strula.


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

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 570 612
27 958
271 741
2 428
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