Jag håller på med ett VB .Net-projekt med en MS Access-databas i grunden. Om du bara vill ha med poster från ARTIKEL där det finns någon relaterad post i ANTAL och för en viss typ kan du skriva så här: Har inte testat själv, men gissar att detta kan fixa problemet. SQL-frågan hoppade aldrig över en kolumn i SORT BY-satsen, men däremot returnerade frågan som lagrades i databasen bara poster med värdet Null - trots att den inte skulle göra det!SQL-fråga ignorerar kolumn i SORT BY-satsen
I databasen finns bland annat en tabell med namnet ARTIKEL med bland annat attributen ArtikelID, Namn osv. Sedan finns det ytterligare en tabell, som heter ANTAL. Där finns attributen ArtikelID (som en främmande nyckel från tabellen Artikel), Datum, Typ osv.
Relationen mellan dessa båda tabeller är som så att en artikel kan finnas flera gånger i tabellen ANTAL. Ett Datum kan förekomma flera gånger, men bara en gång per ArtikelID och Typ. Fältet Typ kan vara ett av fem definierade värden. En artikel behöver inte finnas i tabellen ANTAL för ett visst Datum eller Typ.
I VB-projektet har jag en SQL-fråga, som hämtar värden från bland annat tabellerna ARTIKEL och ANTAL. Nu är det som så att just i den här frågan är bara vissa poster från tabellen ANTAL relevanta, sådana där fältet Typ är 1. Detta har jag löst genom att spara en fråga i Access-databasen - qryANTAL - som frågan i projektet använder som en tabell.
FROM-satsen i SQL-frågan ser ut som följande: "FROM ARTIKEL LEFT JOIN qryANTAL ON ARTIKEL.ArtikelID = qryANTAL.ArtikelID". Det gör att alla artiklar kommer med, även om de inte skulle finnas i tabellen ANTAL. De värdena blir då Null.
Inga problem så långt, men problemen kommer när jag vill använda fältet qryANTAL.Datum (som ju kunde vara Null om artikeln inte fanns för den aktuella Typen i tabellen ANTAL) för att sortera frågan. Då ignorerar VB-projektet den kolumnen i sorteringssatsen och hoppar istället till nästa kolumn som den ska sortera efter.
När jag kör frågan direkt i Access-databasen fungerar sorteringen precis som den ska, utan att någon kolumn ignoreras.
Hur kan jag lösa detta?
Bör poängteras att exemplena ovan är kraftigt beskurna, och till exempel frågan som FROM-satsen är hämtad ifrån hämtar värden från fem tabeller.Sv: SQL-fråga ignorerar kolumn i SORT BY-satsen
<code>
SELECT ARTIKEL.Namn, ANTAL.Datum, ANTAL.Typ, ANTAL.Antal
FROM ARTIKEL INNER JOIN ANTAL ON ARTIKEL.AtrikelId = ANTAL.AtrikelId
WHERE ANTAL.Typ=1;
</code>
[edit]
Missade det där med sorteringen, min SQL-sats ovan gör ju bara att du slipper NULL-värdena, men å andra sidan är det ju inga problem att då lägga til en sorteringSv: SQL-fråga ignorerar kolumn i SORT BY-satsen
...ORDER BY IIF(qryANTAL.Datum IS NULL, #1900-01-01#, qryANTAL.Datum)
Eller om du vill att NULL-värdena ska komma i "andra änden" så tar du ett datum långt in i framtiden.
/JohanSv: SQL-fråga ignorerar kolumn i SORT BY-satsen
Varför det blev så vet jag inte, och jag lade inte heller ner någon störra ansträngning på att lösa det. Istället byggde jag om databasen så att det ändå fungerar - dock inte som jag vill att det ska göra.