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


Sortering så tomma fält hamnar sist

Postades av 2003-08-12 19:23:51 - J. L., i forum asp - allmänt, Tråden har 8 Kommentarer och lästs av 530 personer

Tja...

Jag har en ASP-sida, där jag även använder mig av en databas med många olika fält. Jag vill nu göra en sortering i bokstavsordning ur kolumn B, som t.ex innehåller mellannamn på personer. Vissa poster har ingen text i kolumn B, och sorteras då före de som heter Adam i mellannamn. Hur kan man göra så att de som har tomma fält i den kolumnen som sorteringsfrågan gäller hamnar sist?

Att bara köra två olika recsets (--WHERE b <> ""-- och --WHERE b = ""--) blir inge bra, eftersom jag även har så att det visas 20 poster på varje sida, och det blir då problem med den querystringen som säger var man ska börja hämta, om den då till slut ska hämta de sista 7 från första recset, och sen 13 från nästa osv...

Hoppas ni har något bra förslag.


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-12 20:27:02 - Andreas Hillqvist

ORDER BY -(A Is Null), A, -(B Is Null), B


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 00:29:44 - J. L.

Ska jag alltså bara sätta in kolumnnamnet som jag vill sortera efter där det står A? Fick det inte att fungera, måste man ha den andra (B) också, eller är det bara ett andrahands-alternativ?

Hur ska jag fylla i ASC/DESC?

ORDER BY -(kolumnA ASC Is Null), kolumnA ASC, -(kolumnB DESC Is Null), kolumnB DESC

Tack på förhand...


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 09:00:28 - Andreas Hillqvist

Vad använder du för Databas? Jag förutsätter att du använderr Access.

Detta är exemepl på en fråga som sorterar på efternamn och förnamn. Där tomma värden hamnar sist i sorteringen:

SELECT Users.*
FROM Users
ORDER BY Users.UserLastName Is Null DESC , Users.UserLastName, Users.UserFirstName Is Null DESC , Users.UserFirstName;




Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 11:02:23 - J. L.

Jag använder en SQL-Server databas.

Jag får följande felmeddelande, som väl kanske inte hjälper så mycket...

<b>Microsoft OLE DB Provider for SQL Server (0x80040E14)
Incorrect syntax near the keyword 'Is'.</b>

Koden jag använder är

<code>sqlStr = "SELECT article_number, title, artist_name FROM ProductView WHERE enabled = 1"

set rsProducts = connect.execute(sqlStr & " ORDER BY artist_name Is Null ASC, artist_name ASC")</code>


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 12:50:52 - Andreas Hillqvist

Du kunde nämt att du hade SQL server i dit första inlägg.

Försök med något sådant här:
<code>
sqlStr = "SELECT article_number, title, artist_name FROM ProductView WHERE enabled = 1 ORDER BY CASE WHEN artist_name Is Null THEN 1 ELSE 0 END ASC, artist_name ASC"

set rsProducts = connect.execute(sqlStr)
</code>


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 13:36:58 - Klas Axell

Intressant det här. Mitt svar har inte mycket med asp att göra och använder inte asp själv men det här kanske är ett bra exempel på hur man inte bör skriva sin databaskod. Själv jobbar jag i med java, j2ee och använder oftast CMP bönor och behöver oftast inte bry mig om sql "kod". Det händer också att jag jobbar med O/R verktyg som t ex Hibernate och även då kan jag komma bort från sql:en till största del.

Jag vet att det går fortare att låta databasen ta hand om sorteringen av de records man sökt upp, men frågan är om det verkligen är rätt lösning. Ibland kanske man måste låta konfigurerbarhet, och portabilitet gå före prestanda. Om vi tar detta som exempel så kanske en kund vill använda en Access databas, en annan en SQL server och en tredje vill använda Oracle. Eftersom sql:en inte stöds riktigt på samma sätt i alla databaser uppstår problem. Vad ska man då göra? Utveckla en version av systemet för varje databas och ställas inför versionshanteringsproblem? En bättre lösning kan vara att istället göra sorteringen av records i affärsobjekten. På detta sätt är man alltid säker på att systemet går att flytta mellan olika dbs. Så mitt tips är att skriva frågan som "SELECT article_number, title, artist_name FROM ProductView WHERE enabled = 1" och sedan själv göra sorteringen av records i affärsobjekten.

/Klas


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 15:00:36 - Andreas Hillqvist

Det mest effektiva i detta fallet är nog att ställa två separata fråger. Först hämta med ett namn, sedan det toma posterna:
<code>
sqlStr = "SELECT article_number, title, artist_name FROM ProductView WHERE enabled = 1 AND artist_name Is Not Null ORDER BY artist_name ASC"

set rsProducts = connect.execute(sqlStr)
ListRecords rsProducts
rsProducts.Close

sqlStr = "SELECT article_number, title, artist_name FROM ProductView WHERE enabled = 1 AND artist_name Is Null"

rsProducts.Open sqlStr, connect
ListRecords rsProducts
rsProducts.Close

Private Sub ListRecords(rs)
Do Until rs.EOF
'Kod som skriver ut poster
rs.MoveNext
Loop
End Sub
</code>
Den bör även det flesta databaser klara av.


Svara

Sv: Sortering så tomma fält hamnar sist

Postades av 2003-08-13 16:58:21 - J. L.

Tack så mycket Andreas för din <code>ORDER BY CASE WHEN artist_name Is Null THEN 1 ELSE 0 END ASC, artist_name ASC</code>, den löste allt!

Trodde inte att det spelade någon roll vilken databas, tänkte att SQL var samma överallt...


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

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 796
27 960
271 761
2 364
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