Avatar billede idiotbarn Nybegynder
06. marts 2006 - 14:19 Der er 6 kommentarer og
1 løsning

Sorter samlet output fra to tabeller efter dato

Hej Eksperter
Jeg skal hente data ud fra to tabeller tabel1 og tabel2 . Jeg vil gerne have at det samlede output kommer så det er sorteret efter dato (begge tabeller har et dato felt)

Kan det lade sig gøre i sql eller skal jeg hente dem ind i to forskellige objekter og så merge dem sammen?
Avatar billede lorentsnv Nybegynder
06. marts 2006 - 14:24 #1
Prøv at se på UNION, hvis felterne i de to tabeller er de samme. I få fald kan du lave en order by på det samlede resultat.
Avatar billede idiotbarn Nybegynder
06. marts 2006 - 23:38 #2
Hej. Jeg er endt med at ændre selve database strukturen, så nu har jeg bare én tabel. Jeg ved ikke om jeg skulle oprette et andet spørgsmål for det, men så må du lige sige til...
Tabellen har bl.a. et id, et kunstnerid en titel o.lign
Jeg vil gerne, med et kald, hente hvad jeg skal bruge. Mit felt kaldet ArtistId kan enten være -1 eller et andet tal. Er tallet ikke -1 skal jeg over i tabellen Artists og hente navnet, men er tallet -1 skal jeg bare bruge MadeBy. Jeg checker senere hvorvidt ArtistId = -1...Jeg har forespørelsen

String Query = "Select m.Id, m.ArtistId, m.Title, m.FullPath, m.MadeBy, a.Name from Music m, Artists a where m.SiteId="+SiteId+" AND MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC"

Det er vigtigt at den kun henter de poster hvor SiteId og MainPlaylisten er som angivet, og kun henter m.Name for dem hvor m.ArtistId er opfyldt.
(håber det giver mening)
Lige nu henter den kun de tilfælde hvor artistid!=-1, hvilket jeg egentligt også beder den om, men er det muligt at bare sætte Name til null hvis ArtistId=-1?
Avatar billede lorentsnv Nybegynder
07. marts 2006 - 08:38 #3
Jeg er ikke helt sikker på om jeg forstår helt hvad du ønsker, men du kan checke med en CASE:

String Query = "Select m.Id, m.ArtistId, m.Title, m.FullPath, m.MadeBy, CASE m.ArtistId = -1 THEN NULL ELSE a.NAME END as [Name] from Music m, Artists a where m.SiteId="+SiteId+" AND MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC"

alternativt, hvis du f.eks. ønske MadeBy hvis ArtistID = - 1 og ellers Name hvis ArtistID <> -1, kan du prøve med følgende:

String Query = "Select m.Id, m.ArtistId, m.Title, m.FullPath, CASE m.ArtistId = -1 THEN m.MadeBy ELSE a.NAME END as [Name] from Music m, Artists a where m.SiteId="+SiteId+" AND MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC"

Er det noget i retning af dette du ønsker?
Avatar billede lorentsnv Nybegynder
07. marts 2006 - 08:40 #4
Unskyld, jeg tror jeg mangler en WHEN efter CASE:

String Query = "Select m.Id, m.ArtistId, m.Title, m.FullPath, m.MadeBy, CASE WHEN m.ArtistId = -1 THEN NULL ELSE a.NAME END as [Name] from Music m, Artists a where m.SiteId="+SiteId+" AND MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC"

alternativt

String Query = "Select m.Id, m.ArtistId, m.Title, m.FullPath, CASE WHEN m.ArtistId = -1 THEN m.MadeBy ELSE a.NAME END as [Name] from Music m, Artists a where m.SiteId="+SiteId+" AND MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC"
Avatar billede idiotbarn Nybegynder
08. marts 2006 - 00:02 #5
Dit Alternative foreslag er lige hvad jeg har brug for, men hvis jeg bruger:

Select m.Id, m.ArtistId, m.Title, m.FullPath, CASE m.ArtistId=-1 THEN m.MadeBy ELSE a.NAME END as Name from Music m, Artists a where m.SiteId=2 AND m.MainPlayList=1 AND a.Id=m.ArtistId Order By Added DESC

får jeg fejlen:
Line 1: Incorrect syntax near '='.

Men hvordan fungere det...for hvis m.ArtistId!=-1 skal den hente a.Name hvor a.Id=m.ArtistId

Det eneste jeg skal bruge den til er egentligt at hente navnet på kunstneren hvis m.ArtistId!=-1
Avatar billede idiotbarn Nybegynder
08. marts 2006 - 00:20 #6
Nu skal jeg også lige læse hvad du skriver, jeg havde kopieret fra den forkerte...
Men men men...nu vælger den aldrig nogen. "AND a.Id=m.ArtistId " skal jo kun være opfyldt når man vælger a.Name, og ikke hvis m.ArtistId=-1. Det må være den der gør det, for fjerner jeg den, henter den godt nok posterne, men den  vælger ikke den det rigtige kunstner navn (a.Name)
Avatar billede idiotbarn Nybegynder
07. august 2006 - 23:34 #7
Lukker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester