06. marts 2006 - 14:19Der 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?
Med kunstig intelligens skaber HP’s nye OmniBook X 14 en unik og skræddersyet brugeroplevelse målrettet dem, der ønsker høj ydeevne og intelligente funktioner
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?
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"
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"
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
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)
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.