---
title: "Klurig SQL. Söka i fler poster men bara presentera huvudposter"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/95713-klurig-sql-söka-i-fler-poster-men-bara-presentera-huvudposter"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Addeladde"
published: "2004-01-25T18:30:23.000Z"
updated: "2004-01-30T09:51:14.000Z"
replies: 10
views: 457
page: 1
pages: 1
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/databaser-sql/95713-klurig-sql-söka-i-fler-poster-men-bara-presentera-huvudposter"
---

# Klurig SQL. Söka i fler poster men bara presentera huvudposter

## #1 — Addeladde, 2004-01-25T18:30Z

Har följande SQL-fråga som visar huvudtrådar i ett forum "f.huvud=1"

Men när jag gör en sökning så vill jag även att den ska söka i inlägg som inte har "f.huvud=1" men den ska fortfarande bara visa huvudtrådar.

Hur gör jag det?

```
sqlString = "SELECT f.rubrik, f.id, f.rubrik, f.visad, f.datum, f.Svar, s.Firstname, s.LastName, s.MemberID " &_
	  "FROM forum as f, sysslingar as s " &_
	  "Where f.MID = s.MemberID "&_ 
	  "And f.forum = 1 "
	  IF action = "SOK" and memberID <> "" THEN
	    sqlString = sqlString &_
		"And f.MID = "& memberID &" "
	  END IF
	  IF action = "SOK" and sokord <> "" THEN
	    sqlString = sqlString &_
		"And (f.inlagg LIKE '%"& sokord &"%' " &_ 
		"Or f.rubrik LIKE '%"& sokord &"%') " 
	  END IF
	  sqlString = sqlString &_
	  "And f.huvud = 1 " &_ 
	  "ORDER BY f.senast desc"
	SET forumRS = Con.Execute( sqlString )
```

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

## #2 — LarsG, 2004-01-25T19:47Z

Lägg till detta sist i din andra if. Du får ordna till parenteserna.

```
or exists (select * from forum f2
where (f2.inlagg LIKE  <sokord>
  Or f2.rubrik LIKE <sokord> )
  and f2.parent = f.id)
```

parent motsvarar den kolumn som anger vilken tråd ett inlägg tillhör.

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

## #3 — Addeladde, 2004-01-25T20:35Z

Är inte riktigt med på hur du gör:

```
	sqlString = "SELECT f.rubrik, f.id, f.rubrik, f.visad, f.datum, f.Svar, s.Firstname, s.LastName, s.MemberID " &_
	  "FROM forum as f, sysslingar as s " &_
	  "Where f.MID = s.MemberID "&_ 
	  "And f.forum = 1 "
	  IF action = "SOK" and memberID <> "" THEN
	    sqlString = sqlString &_
		"And f.MID = "& memberID &" "
	  END IF
	  IF action = "SOK" and sokord <> "" THEN
	    sqlString = sqlString &_
		"And (f.inlagg LIKE '%"& sokord &"%' " &_ 
		"Or f.rubrik LIKE '%"& sokord &"%') " &_
		"or exists (select * from forum [b]as[/b] f2 " &_
		"where (f2.inlagg LIKE  '%"& sokord &"%' " &_
 		 "Or f2.rubrik LIKE '%"& sokord &"%' ) " &_
   		"and f2.parent = f.id) "
	  END IF
	  sqlString = sqlString &_
	  "And f.huvud = 1 " &_ 
	  "ORDER BY f.senast desc"
```

Borde det inte vara med ett as som jag fetmarkerat ovan?

Jag får felmeddelande om att det inte angetts något värde för en eller flera nödvändiga parametrar.

Vad är parent för nått?
Sitter inte paranterserna rätt?

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

## #4 — Addeladde, 2004-01-25T20:42Z

Löste det nu i alla fall men det presnterar alla under trådar också jag vill att den bara ska visa huvudtrådarna. Men sökningen ska fortfarande göras i undertrådar.

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

## #5 — Addeladde, 2004-01-26T01:03Z

Får det inte att fungera: Nu ser min kod ut så här:

```
	sqlString = "SELECT f.rubrik, f.id, f.rubrik, f.visad, f.datum, f.Svar, s.Firstname, s.LastName, s.MemberID " &_
	  "FROM forum as f, sysslingar as s " &_
	  "Where f.MID = s.MemberID "&_ 
	  "And f.forum = 1 "
	  IF action = "SOK" and memberID <> "" THEN
	    sqlString = sqlString &_
		"And f.MID = "& memberID &" "
	  END IF
	  IF action = "SOK" and sokord <> "" THEN
	    sqlString = sqlString &_
		"And (f.inlagg LIKE '%"& sokord &"%' " &_ 
		"Or f.rubrik LIKE '%"& sokord &"%') " &_ 
		"And f.huvud = 1 " &_ 
		"Or Exists (select * from forum as f2 " &_
		"where f2.inlagg LIKE  '%"& sokord &"%' " &_
		"and f2.HTID = f.id) "
	  Else
	    sqlString = sqlString &_
		"And f.huvud = 1 "
	  END IF
	  sqlString = sqlString &_
	  "ORDER BY f.senast desc"
```

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

## #6 — @nders, 2004-01-26T07:07Z

Kan du inte skriva ut hur den färdiga SQL-frågan ser ut istället? 

\- - - - - 

AS är valfritt, det fungerar precis lika bra att ha med det vid tilldelning av alias, som att strunta i det.

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

## #7 — Addeladde, 2004-01-26T07:11Z

Visst kan jag det

```
SELECT f.rubrik, f.id, f.rubrik, f.visad, f.datum, f.Svar, f.huvud, s.Firstname, s.LastName, s.MemberID 
FROM forum as f, sysslingar as s 
Where f.MID = s.MemberID And f.forum = 1 
And (f.inlagg LIKE '%test%' 
Or f.rubrik LIKE '%test%') 
And f.huvud = 1 
Or Exists (select * from forum as f2 where f2.inlagg 
LIKE '%test%' and f2.HTID = f.id) 
ORDER BY f.senast desc
```

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

## #8 — Addeladde, 2004-01-26T13:48Z

Ingen som ser vad jag gjort knasigt?

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

## #9 — Addeladde, 2004-01-28T21:51Z

Skulle verkligen behöva hjälp med detta

Om vi börjar om från början med min SQL fråga.

Jag vill alltså endast hämta en tråd och det är huvudinlägge som ska visas i sökningen.

Tabellen består av en räknare ID, en kolumn som heter huvud och om den är satt till 1 så är det huvudinlägget. Sedan finns en kolumn som hetet HID som är ID numret på huvudinlägget.

Sökningen ska sedan göras i i både huvudinlägen och inläggen titel och beskrivning med kolumnernas namn.

Har sökt på webforum och hittat en del exempel på detta men jag har inte lyckats få till det.

Jätte tacksam för svar...

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

## #10 — Peter S, 2004-01-29T12:57Z

Om *ThreadID* motsvarar den kolumn som anger vilken tråd inlägget hör till och *MID* motsvarar det medlems-id som tillhör medlemmen som gjort inlägget:

```
select f2.rubrik, f2.visad, f2.datum, f2.Svar, s.Firstname, s.LastName 
from forum f2, sysslingar s 
where s.MemberID = f2.MID and f2.huvud = 1 and f2.ThreadID in (select distinct f.ThreadID 
from forum f 
where f.rubrik like '%test%' or f.inlagg like '%test%') 
order by f2.senast desc
```

 :)

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

## #11 — Addeladde, 2004-01-30T09:51Z

Kanoners Peter!!

Färdiga koden blev så här:

```
sqlString = "select f2.rubrik, f2.visad, f2.datum, f2.Svar, f2.huvud, f2.id, s.Firstname, s.LastName, s.MemberID " &_ 
	"from forum f2, sysslingar s " &_ 
	"where s.MemberID = f2.MID " &_ 
	"and f2.huvud = 1 "
	If action = "SOK" Then
	  If memberID <> "" Then
	    sqlString = sqlString &_
		"And f2.MID = "& memberID &" "
	  End If
	  sqlString = sqlString &_
	  "and f2.id in (select distinct f.HTID " &_
	  "from forum f " &_
	  "where 1 = 1 "
	  If sokord <> "" Then
		sqlString = sqlString &_
		"and f.rubrik like '%"& sokord &"%' " &_
		"or f.inlagg like '%"& sokord &"%' " 
	  End if
		If memberID <> "" Then
	      sqlString = sqlString &_
		  "And f.MID = "& memberID &" "
	  End If
	  sqlString = sqlString &_
	  "and 1 = 1 )"
	End If
	sqlString = sqlString &_
	"order by f2.senast desc "
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/95713-klurig-sql-söka-i-fler-poster-men-bara-presentera-huvudposter
