---
title: "SQLfråga samt sortering med asp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/10463-sqlfråga-samt-sortering-med-asp"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "erka"
published: "2001-07-06T11:51:00.000Z"
updated: "2001-07-09T12:57:00.000Z"
replies: 20
views: 264
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/10463-sqlfråga-samt-sortering-med-asp"
---

# SQLfråga samt sortering med asp

_Sida 1 av 2._

## #1 — erka, 2001-07-06T11:51Z

Hej ett litet problem igen... 

Det är så att jag har en nyhets DB med nyheter på 5 olika språk. Ja 
g har 2 tabeller, en som heter News och en som heter NewsContent 

Först ska jag skriva ut alla nyheter som finns på engelska och är det= 
någon nyhet som inte finns på engelska men på tex svenska så ska d= 
en komma under alla de engelska nyheterna 

Typ så här 

```
News that exists in English 
Loopa igenom alla nyheter som finns på engelska 

News that exists in Swedish
Loopa igenom alla nyheter som finns på svenska men inte på engelska 

Sedan vidare och gör samma sak om det finns några nyheter som inte finns på engelska eller tidigare loopat språk
```

Tabellerna ser ut så här: '

```
NEWS 
-NewsID 
-NewsInsertDate 
-NewsPublishDate 
-NewsRemoveDate 

NEWSCONTENT 
-NewsID 
-NewsLanguageID 
-NewsHeader 
-NewsContent 
-NewsAuthor 
-NewsPicture
```

Där News.NewsID är en relation till NewsContent.NewsID (en till många= 
) 

Förstår ni vad jag är ute efter ? 

Just nu har jag frågan

```
SQLStmt = "SELECT NewsContent.NewsId, Distinct(NewsContent.NewsLanguageid), NewsContent.NewsHeader, News.NewsId,"_
	& "News.NewsInsertdate FROM News INNER JOIN NewsContent ON News.NewsId = NewsContent.NewsId "
```

/erka

Permalänk: https://www.webforum.nu/p/10463

## #2 — LarsG, 2001-07-06T12:50Z

Om du lägger till en kolumn, sortOrder i languagetabellen som anger i vilken ordning man skall välja språk så kan man skriva en fråga enligt följande

```
select news,sortOrder
  from news n inner join newsContent nc on nc.id = n.id
            inner join language l on nc.lang = l.lang
  where nc.id not in (select id from newsContent
                       where lang < nc.lang) order by sortOrder
```

Permalänk: https://www.webforum.nu/p/276910

## #3 — erka, 2001-07-06T13:18Z

Hur menar du då ? i den tabellen finns ju flera av samma artiklar fast på olika språk, blir inte det väldigt mycket dubbel information, inte vidare normaliserat..

Permalänk: https://www.webforum.nu/p/276911

## #4 — LarsG, 2001-07-06T13:51Z

Jag menade inte tabellen newsContent utan att du har en separat tabell med två kolumner ocah att det är kopplat till

NewsLanguageId!language!sortorder
\---------------------------------
19\.............!English!1
47\.............!Swedish!2
11\.............!Spanish!3
22\.............!French.!4

Permalänk: https://www.webforum.nu/p/276912

## #5 — erka, 2001-07-06T14:08Z

Nu har jag koden

```
	SQLStmt = "select news,sortOrder "_
	& "from news n inner join newsContent nc on nc.id = n.id inner join language l on nc.lang = l.lang"_
	& " where nc.id not in (select id from newsContent where lang < nc.lang) order by sortOrder"
```

och tabellerna

```
NEWS 
-NewsID  (text)
-NewsInsertDate  (text)
-NewsPublishDate  (text)
-NewsRemoveDate  (text)

NEWSCONTENT 
-NewsID (tal)
-NewsLanguageID (text)
-NewsHeader  (text)
-NewsContent  (text)
-NewsAuthor  (text)
-NewsPicture (text)

SORTORDER
-NewsLanguageID(text)
-Language (text)
-SortOrder (tal)
```

NewsLanguageID är typ se, gb, es, fi etc. Jag får nu felmeddelandet 

```
Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'nc.id = n.id inner join language l on nc.lang = l.lang'.
```

Missing operator ?

Permalänk: https://www.webforum.nu/p/276913

## #6 — erka, 2001-07-06T14:16Z

satt å lekte med access men det vill sig inte

```
SELECT News.NewsId, NewsContent.NewsId, NewsContent.NewsLanguageid, NewsContent.NewsHeader, SortOrder.NewsLanguageId, SortOrder.Language, SortOrder.Sortorder FROM SortOrder INNER JOIN (News INNER JOIN NewsContent ON News.NewsId = NewsContent.NewsId) ON SortOrder.NewsLanguageId = NewsContent.NewsLanguageid WHERE NewsContent.NewsId NOT IN (SELECT NewsId FROM NewsContent WHERE NewsId < Newscontent.LanguageId) ORDER BY SortOrder
```

är jag helt ute åp cyklar

Permalänk: https://www.webforum.nu/p/276914

## #7 — LarsG, 2001-07-06T14:34Z

Access är lite besvärligt när man skriver joins. Det brukar behövas lite parenteser

```
select news,sortOrder
from (news n inner join newsContent nc on nc.newsId = n.newsId)
inner join sortOrder l on nc.newsLanguageId = l.newsLanguageId
where nc.newsId not in (select newsId from newsContent
where newsLanguageId  in (select newsLanguageid from sortOrder 
where sortOrder < l.sortOrder )) order by sortOrder
```

Jag gjorde en miss i min förra fråga. Den fugerade bara om om newsLanguageId kom i samma ordning som sortOrder. Jag skrev om frågan så nu skall det enbart bero på sortOrder.

red: glömde order by

Permalänk: https://www.webforum.nu/p/276915

## #8 — erka, 2001-07-06T16:52Z

Ska prova snart. Tack så mycket, vart kan man läsa om access och join funktioner, vet du det också kanske ;) tack så himmla mycket

Permalänk: https://www.webforum.nu/p/276916

## #9 — LarsG, 2001-07-06T16:57Z

<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/acintsql.asp>

Permalänk: https://www.webforum.nu/p/276917

## #10 — erka, 2001-07-06T20:50Z

Fan letade ju där, tack !

Permalänk: https://www.webforum.nu/p/276918

## #11 — erka, 2001-07-09T07:45Z

Hej igen. Får nu felmeddelandet 

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 

/webtools/News.asp, line 137
```

Men hittar inget som är fel

när jag skriver ut sqlstmt:en får jag

```
SELECT News, SortOrder FROM (news n inner join newsContent nc on nc.newsId = n.newsId)inner join sortOrder l on nc.newsLanguageId = l.newsLanguageId WHERE nc.newsId not in (SELECT newsId from newsContent WHERE newsLanguageId in (SELECT newsLanguageid from sortOrder WHERE sortOrder < l.sortOrder )) ORDER BY sortOrder
```

Måntro vad kan va fel ?

Permalänk: https://www.webforum.nu/p/276919

## #12 — LarsG, 2001-07-09T09:07Z

Det brukar oftast bero på att något kolumnnamn är felaktigt.

Permalänk: https://www.webforum.nu/p/276920

## #13 — erka, 2001-07-09T09:10Z

Jo det är det jag har letat efter. Men kan lixom inte bara hitta det. Inget är väll reserverat, news eller sortorder kanske men inte så vitt jag vet.

Ser inte något konstigt med denna

```
SQLStmt = "SELECT News, Sortorder FROM (News n INNER JOIN NewsContent nc on nc.NewsId = n.NewsId) INNER JOIN Sortorder l ON nc.NewsLanguageid = l.NewsLanguageId WHERE nc.NewsId NOT IN (SELECT NewsId FROM NewsContent WHERE NewsLanguageid IN (SELECT NewsLanguageId FROM Sortorder WHERE Sortorder < l.Sortorder)) ORDER BY Sortorder"
```

Permalänk: https://www.webforum.nu/p/276921

## #14 — icaaq, 2001-07-09T09:18Z

Alla reserverade SQL-utryck
 <http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/reserverade_ord_t-sql.asp> 

 :h

Permalänk: https://www.webforum.nu/p/276922

## #15 — erka, 2001-07-09T09:23Z

tackar, inget där som jag trodde. har nu gått igenom hela SQLStmten mot dbn 100 ggr och kan inte hitta något fel, vad kan det annars bero på ?
tack

/erka

Permalänk: https://www.webforum.nu/p/276923

## #16 — erka, 2001-07-09T09:31Z

LarsG, du skrev

```
select news,sortOrder
from (news n inner join newsContent nc on nc.newsId = n.newsId)
inner join sortOrder l on nc.newsLanguageId = l.newsLanguageId
where nc.newsId not in (select newsId from newsContent
where newsLanguageId in (select newsLanguageid from sortOrder 
where sortOrder < l.sortOrder )) order by sortOrder
```

vad betyder SELECT news,sortOrder
from När News och SortOrder är namnet på 2 tabeller i DB:n.

Skriver jag

```
select *
from (news n inner join newsContent nc on nc.newsId = n.newsId)
inner join sortOrder l on nc.newsLanguageId = l.newsLanguageId
where nc.newsId not in (select newsId from newsContent
where newsLanguageId in (select newsLanguageid from sortOrder 
where sortOrder < l.sortOrder )) order by sortOrder
```

så får jag fram något, men vad exakt är det jag får fram ?

tacksam 
/erka

Permalänk: https://www.webforum.nu/p/276924

## #17 — erka, 2001-07-09T09:52Z

Nu får jag ju ut rätt genom att ta \* istället för skriva som du larsG, men hur kan jag göra så jag skriver ut Först namnet på språket en gång sedan loopar jag
sedan namnen på nästa språk i sortorder listan och loopa där..

om du orkar..

/erka

Permalänk: https://www.webforum.nu/p/276925

## #18 — LarsG, 2001-07-09T11:45Z

Du får alltså ut data så här

en!News Item 1!...
en!News Item 3!...
fi!News item 2!...

Om du bara vill skriva ut språk en gång, så får du själv i din VB-kod hålla reda på när man byter språk.

```
language = ""
sql = "..."
set rs = connect.execute(sql)

while not rs.eof
  if  Cstr(language) <> Cstr(rs("language") then
      language = rs("language")
      response.write language & "<br>"
  end if
'skriv övrigt data
rs.movenext
wend
```

Permalänk: https://www.webforum.nu/p/276926

## #19 — erka, 2001-07-09T12:24Z

Ohh tack nu åter står bara ett problem.. ;)

Det är att jag anväder mig av getrows..Jag har sökt lite men inte lyckats förstå hur jag ska göra liknande som while not rs.eof med den koden jag använder nu

```
	SQLStmt = "SELECT * FROM (News n INNER JOIN NewsContent nc on nc.NewsId = n.NewsId) "_
	& "INNER JOIN SortOrder l ON nc.NewsLanguageid = l.NewsLanguageId WHERE nc.NewsId "_
	& "NOT IN (SELECT NewsId FROM NewsContent WHERE NewsLanguageid IN "_
	& "(SELECT NewsLanguageId FROM SortOrder WHERE Sortorder < l.Sortorder)) ORDER BY SortOrder"	 
	 
	Response.Write"<br>"
	SET RS = Connect.Execute(SQLStmt)
	
	Dim ArrRS, a, i, Number , rs2, ArrRs2, CountryRep
	ArrRS = RS.GetRows()
	RS.Close
	Set RS = Nothing
	
		For i = 0 to ubound(ArrRS,2)
			Number = ArrRS(0, i) 
			CountryRep = ArrRS(5, i)
			SQLStmt2 = "SELECT * FROM NewsContent WHERE NewsID = "& Number &""
			SET RS2 = Connect.Execute(SQLStmt2)
			ArrRS2 = RS2.GetRows()
			RS2.Close
			Set RS2 = Nothing
			Response.Write ArrRS(6, i) &" (published: "& ArrRS(2, i) &")<br>"
			Response.Write"Existing languages: " 
			For a = 0 to ubound(ArrRS2,2)
			Response.Write"<img src=""/bin/images/flags/"& ArrRS2(1, a) &".gif"">"_
						 &"<img src=""/bin/images/flags/1x1vit.gif"">"
			Next
		Response.Write"<br><a href=""view.asp?documentID=News&catID=wt&Action=AddStep1&NewsID="& ArrRS(0, i) &""_
						& """>Add new language version</a><br><br>"

		Next
```

Vet du det också kanske ;) tackar i alla fall för hjälpen

Permalänk: https://www.webforum.nu/p/276927

## #20 — erka, 2001-07-09T12:37Z

fattar ju att jag måste sätta ett värde som sätts på 0 vid varje nytt land som kollas igenom. Sedan öka den med ett för varje nyhetsid jag går igenom. Och kolla av den i varje loop så att säga. Men hur fean skriver man det, det är frågan

Permalänk: https://www.webforum.nu/p/276928

---

Tråden på webben: https://www.webforum.nu/amne/asp/10463-sqlfråga-samt-sortering-med-asp  
Nästa sida: https://www.webforum.nu/amne/asp/10463-sqlfråga-samt-sortering-med-asp/page2.md
