Vraag & Antwoord

Webprogrammeren & scripting

ASP - SQL (Access)-vraag

18 antwoorden
  • Ik heb 2 kolommen uit een database gehaald en die stop ik in een recordset Rs. [code:1:6900157dad]sql = "SELECT * FROM bezoekers ORDER BY Datum, Naam"[/code:1:6900157dad] Nu staat bij sommige records geen datum. Hij plaats nu eerst de records zonder datum (en naam op volgorde), dan met datum op volgorde (en naam op volgorde). Ik zou graag zien dat ie eerst alle records met datum pakt en dan pas de records zonder datum. Hoe doe ik dat?
  • [quote:9c6b5f5814="Johant"]sql = "SELECT * FROM bezoekers ORDER BY Datum, Naam" [/quote:9c6b5f5814] Ik weet het niet zeker maar probeer eens: [code:1:9c6b5f5814] SELECT * FROM bezoekers ORDER BY Datum DESC, Naam DESC [/code:1:9c6b5f5814] Als dit niet werkt probeer dan eens DESC(ending) door ASC(ending) te vervangen. Marcel
  • Volgens mij gaat het erom wel oplopend op datum te sorteren, maar dan niet beginnend met de null-datums. Dat zul je dan toch met twee queries/recordsets moeten doen: sql = "SELECT * FROM bezoekers WHERE Not IsNull(Datum) AND Datum <> "" ORDER BY Datum, Naam" en daarna sql = "SELECT * FROM bezoekers WHERE IsNull(Datum) OR Datum = "" ORDER BY Naam"
  • Als je inderdaad dat wil zul je inderdaad twee verschillende query's moet gebruiken, ik had het denk ik niet volledig begrepen.
  • in 1 query: [code:1:265d4e7a83] SELECT Naam, Datum, IIf(Datum IS NULL, 1, 0) FROM bezoekers ORDER BY 3 ASC, Datum ASC, Naam ASC [/code:1:265d4e7a83] Als je ze aflopend gesorteerd wil hebben (DESC) heb je natuurlijk nergens last van.
  • Hi Annie, Kun je jouw code uitleggen, want die begrijp ik niet zo goed?
  • [color=blue:99cc2d8bef]IIf(Datum IS NULL, 1, 0)[/color:99cc2d8bef] >> als Datum de waarde NULL heeft geef dan een 1 terug en anders een 0. [color=blue:99cc2d8bef]ORDER BY 3 ASC[/color:99cc2d8bef] >> sorteer op de 3e kolom uit de resultset (van laag naar hoog). Dus alle "geldige" datums krijgen in de derde kolom een 0 en zullen dus als eerste getoond worden.
  • Je sorteert op de derde kolom met in de ORDER BY clause: 3 ASC. Bij de veldopsomming geef je de derde kolom geen naam mee. Ik heb je methode in Access geprobeerd en dan verzint ie zelf een kolomnaam, Expr1003 in mijn geval (en als ik naar designview switch maakt ie er Expr1 van). En dan sorteert ie dus ook niet op 3 ASC... En waarom expliciet ASC erbij vermeld? Ik ken niet anders dan dat dat default is, maar ik ken dan ook niet alle engines... (en ook niet alle tricks, handig, dat iiffen in een query). Ik zou er dus dit van maken: [code:1:e369eef7ef] SELECT Naam, Datum, IIf(Datum IS NULL, 1, 0) AS sortDatum FROM bezoekers ORDER BY sortDatum, Datum, Naam [/code:1:e369eef7ef]
  • Voor zover ik weet doet: ORDER BY 3 ASC het volgende: sorteer op de 3e kolom in het result set. Maar dit weet ik niet zeker.
  • [quote:f131e14c32="Paulus"]Je sorteert op de derde kolom met in de ORDER BY clause: 3 ASC.[/quote:f131e14c32] Klopt [quote:f131e14c32="Paulus"] Bij de veldopsomming geef je de derde kolom geen naam mee. [/quote:f131e14c32] Leek mij ook niet nodig, maar ik ken Access blijkbaar niet goed genoeg ;) [quote:f131e14c32="Paulus"] En waarom expliciet ASC erbij vermeld? Ik ken niet anders dan dat dat default is, maar ik ken dan ook niet alle engines... [/quote:f131e14c32] Klopt, is niet nodig, maar ik zou ze niet de kost willen geven die denken dat bij volgend voorbeeld alle kolommen aflopend gesorteerd worden: [i:f131e14c32]...ORDER BY a, b, c DESC[/i:f131e14c32] Dus voor de duidelijkheid eigenlijk.
  • [quote:761b5469a6="Mvlstar"]Voor zover ik weet doet: ORDER BY 3 ASC het volgende: sorteer op de 3e kolom in het result set. Maar dit weet ik niet zeker.[/quote:761b5469a6] uhh, zei ik niet eerder daar iets over? [quote:761b5469a6="Annie"]ORDER BY 3 ASC >> sorteer op de 3e kolom uit de resultset (van laag naar hoog). [/quote:761b5469a6] Of geloof je me soms niet :cry:
  • Ik gebruik nu de volgende sql: [code:1:f05a72c98e]SELECT * , IIF(Datum IS NULL, 1, 0) as sortDatum FROM bezoekers ORDER BY sortDatum, Datum, Naam[/code:1:f05a72c98e] Maar krijg helaas de volgende foutmelding. Haal ik de sortDatum bij de ORDER BY weg dan geeft ie de oude tabel goed weer. [quote:f05a72c98e]Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. [/quote:f05a72c98e]
  • SELECT *, IIF(...) FROM...
  • Paulus, excuses, tijdens jouw bericht heb ik de mijne even wat aangepast. zie 2 hierboven. Ik krijg nog steeds die foutmelding.
  • JA sorry, stom, die sortDatum zit natuurlijk niet in de tabel, je moet orderen op die IIF-functie en dan hoef je hem in principe niet in de SELECT mee te nemen: [code:1:b5967eb267] SELECT * FROM bezoekers ORDER BY IIf(Datum IS NULL, 1, 0), Datum, Naam [/code:1:b5967eb267] Dat zou hem moeten zijn.
  • Fantastisch, hij doet het :P Hier was ik dus nooit op gekomen. Super...
  • [quote:ef4afff52c="Johant"]Fantastisch, hij doet het :P Hier was ik dus nooit op gekomen. Super...[/quote:ef4afff52c] Ik ook niet. Weer wat geleerd :lol:
  • [quote:5e2279d4a1="Annie"]uhh, zei ik niet eerder daar iets over? [/quote:5e2279d4a1] Tsja, te snel gelezen waarschijnlijk.... Maar goed alles is nu duidelijk en weer wat geleerd.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.