J'ai plusieurs tables:mieux notés, la plus ancienne piste
CREATE TABLE [dbo].[Tracks](
[Id] [uniqueidentifier] NOT NULL,
[Artist_Id] [uniqueidentifier] NOT NULL,
[Album_Id] [uniqueidentifier] NOT NULL,
[Title] [nvarchar](255) NOT NULL,
[Length] [int] NOT NULL,
CONSTRAINT [PK_Tracks_1] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[TrackHistory](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Track_Id] [uniqueidentifier] NOT NULL,
[Datetime] [datetime] NOT NULL,
CONSTRAINT [PK_TrackHistory] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO [cooltunes].[dbo].[TrackHistory]
([Track_Id]
,[Datetime])
VALUES
("335294B0-735E-4E2C-8389-8326B17CE813"
,GETDATE())
CREATE TABLE [dbo].[Ratings](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Track_Id] [uniqueidentifier] NOT NULL,
[User_Id] [uniqueidentifier] NOT NULL,
[Rating] [tinyint] NOT NULL,
CONSTRAINT [PK_Ratings] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
INSERT INTO [cooltunes].[dbo].[Ratings]
([Track_Id]
,[User_Id]
,[Rating])
VALUES
("335294B0-735E-4E2C-8389-8326B17CE813"
,"C7D62450-8BE6-40F6-80F1-A539DA301772"
,1)
Users
User_Id|Guid
Other fields
Liens entre les tables sont assez évidentes. TrackHistory ajoute chaque piste comme une rangée chaque fois qu'elle est jouée. une piste apparaîtra là-bas plusieurs fois.
La valeur des évaluations sera 1 ou -1. Ce que j'essaie de faire est de sélectionner la piste avec la meilleure note, c'est-à-dire more than 2 hours old, et s'il y a un doublon pour une piste (ie une piste reçoit 6 +1 notes et 1 - évaluation, ce qui donne suivre une note totale de 5, une autre piste a également une note totale de 5), la piste qui a été joué le plus longtemps doit être retourné. (Si toutes les pistes ont été jouées dans les 2 dernières heures, aucune ligne ne doivent être retournés)
Je reçois faire quelque part chaque partie individuellement en utilisant le lien ci-dessus, et SUM(Value)
GROUP BY Track_Id
, mais je vais avoir du mal à mettre tout ensemble.
J'espère que quelqu'un avec un peu plus de connaissances (MS) SQL sera en mesure de m'aider. Merci beaucoup!
Peut-être que vous pouvez publier vos instructions SQL ou Créer une table avec des données d'insertion. – Sam
"et s'il y a un doublon pour une piste (c.-à-d. 5 pour deux pistes ou plus), la piste qui a été jouée la dernière fois devrait être retournée." Cette section n'a pas de sens pour moi. D'où obtenez-vous 5? Les pistes ne devraient-elles pas être évaluées plus d'une fois? Qu'est-ce qu'un doublon? Dupliquer l'utilisateur et la piste peut-être? – Sam
Désolé Sam, oui je prévoyais de. Je ne l'avais pas à ma disposition quand j'ai écrit la question. Pour votre deuxième question, je vais mettre à jour la question. –