SELECT dbo.Movies.moviePId, dbo.Movies.movieName, dbo.Movies.movieLink, dbo.Movies.movieImage, dbo.Movies.movieDescriptionShort, dbo.Movies.movieDescriptionLong, dbo.Movies.movieKeywords, dbo.Movies.movieCountSeen, dbo.Movies.movieDateAdded, dbo.Movies.truckBrandFId, dbo.TruckBrands.truckBrandName FROM dbo.Movies INNER JOIN (select top 1 truckBrandName, truckBrandId from dbo.TruckBrands group by truckBrandName, truckBrandId order by count(*) desc) as t1 ON dbo.Movies.truckBrandFId = t1.truckBrandPId
Eller som cross apply: SELECT dbo.Movies.moviePId, dbo.Movies.movieName, dbo.Movies.movieLink, dbo.Movies.movieImage, dbo.Movies.movieDescriptionShort, dbo.Movies.movieDescriptionLong, dbo.Movies.movieKeywords, dbo.Movies.movieCountSeen, dbo.Movies.movieDateAdded, dbo.Movies.truckBrandFId, tbn.truckBrandName FROM dbo.Movies t cross apply( select top 1 truckBrandName where dbo.TruckBrands.truckBrandPId = t.truckBrandFId group by truckBrandName order by count(*) desc) as tbn
Tak for dit forsøg. Men ikke helt det jeg søger. Det du giver mig er kun én fra TruckBrands tabellen og så giver mig de 2 rækker, der har den ene fra Movies tabellen.
Som du kan se, så er hvert enkelt lastbilmærke repræsenteret én gang og det med højeste sete som den udvalgte.
Håber I kan hjælpe mig....For jeg er lost.
Forøvrigt den der cross apply.....Af en eller anden grund, når jeg forsøger den i min SQL Server Management Studio i Views så stopper studio med at fungere og jeg er nødt til at genstarte den. Jeg bruger Version 2005.
Okay ja... hvis din tabel så hedder TableTruck, lav evt. et view udfra dine andre 2 tabeller eller bibehold dit join :) up to you...
Og gør sådan :
with truck as ( select row_number() over (partition by LastbilId order by Seet desc) as RN, Id, Navn, LastbilId, Seet from TableTruck) select * from truck where RN = 1
Test: create table TableTruck ( Id int, Navn varchar(25), LastbilId int, Seet int )
insert into TableTruck values(1, 'Navn1', 1, 8) insert into TableTruck values(2, 'Navn2', 2, 10) insert into TableTruck values(3, 'Navn3', 3, 3) insert into TableTruck values(4, 'Navn4', 4, 5) insert into TableTruck values(5, 'Navn5', 5, 7) insert into TableTruck values(6, 'Navn6', 6, 2) insert into TableTruck values(7, 'Navn7', 7, 9) insert into TableTruck values(8, 'Navn8', 8, 1) insert into TableTruck values(9, 'Navn9', 1, 4) insert into TableTruck values(10, 'Navn10', 3, 6)
Jeg forstår ikke helt din select .....Jeg har forsøgt med nedenviste men får at vide, der er en fejl i nærheden af with
SELECT * FROM dbo.Movies INNER JOIN dbo.TruckBrands ON dbo.Movies.truckBrandFId = dbo.TruckBrands.truckBrandPId with Movies as ( select row_number() over (partition by moviePId order by movieCounSeen desc) as RN, moviePId, movieNAme, truckBrandFId, movieCountSeen from Movies) select * from Movies where RN = 1
Den ene tabel hedder Movies (den der så har en truckBrandFId i sig som henvisning til tabellen TruckBrands) og den anden TruckBrands
Okay.. så joiner vi bare inden i WITH, no problem...
with MS as ( select row_number() over (partition by moviePId order by movieCounSeen desc) as RN, moviePId, movieNAme, dbo.Movies.truckBrandFId, movieCountSeen FROM dbo.Movies INNER JOIN dbo.TruckBrands ON dbo.Movies.truckBrandFId = dbo.TruckBrands.truckBrandPId ) select * from MS where RN = 1
Når du laver en WITH lige efter et normalt statement, så husk at afslutte med semicolon.
eks.vis select * from FooTable; WITH SomeFun as(select .......)
Ellers så skriv DDL til dine 2 tabeller, og giv mig lidt data, så skal jeg hurtigt skrive SQL'en til dig :)
Har zippet en backup af databasen til dig, der er kun de to tabeller med test data i ....altså udover alle tabellerne til asp.net login - men igen kun test data.
SELECT TOP (100) PERCENT A.moviePId, A.movieName, A.movieCountSeen, A.truckBrandFId FROM dbo.Movies AS A INNER JOIN (SELECT truckBrandFId, MAX(movieCountSeen) AS MaxSet FROM dbo.Movies GROUP BY truckBrandFId) AS B ON A.truckBrandFId = B.truckBrandFId AND A.movieCountSeen = B.MaxSet ORDER BY A.truckBrandFId
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.