---
title: "Fråga efter poster som inte finns..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/52022-fråga-efter-poster-som-inte-finns"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Eclipse"
published: "2002-09-02T13:44:20.000Z"
updated: "2002-09-06T20:05:14.000Z"
replies: 12
views: 355
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/52022-fråga-efter-poster-som-inte-finns"
---

# Fråga efter poster som inte finns...

## #1 — Eclipse, 2002-09-02T13:44Z

Fasen... jag vet inte hur jag ska börja!

Jag har tidigare fuskat och har hafr frågan-i-frågan varianten. Man ställer en SQL fråga, loopar den och ställer en ytterligare fråga innuti den. Det är en fungerande men osnygg lösning.

Hur gör jag för att ställa frågan bara en gång?

Jag har kollat lite efter detta men jag vet inte riktigt vad jag ska leta efter...

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

## #2 — Eclipse, 2002-09-02T13:50Z

Vänta lite... svara inte på detta ännu, jag ska testa lite och återkommer... Jag har uttryckt mig lite dumt! Sorry!

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

## #3 — Eclipse, 2002-09-02T14:52Z

Nytt försök

Jag har tre tabeller. \[competence\], \[competenceX\] och \[users\].

\[competence\] - namn på olika kompetenser.
x_ID
x_name
x_sortfield - nummerordning
x_view - visa / visa inte

\[competenceX\] - vem av användarna som besitter vilken kompetens. (Skitdumt namn!! I brist på bättre vetande...)
x_ID
x_competenceID
x_userID

\[users\] - inte mycket att orda om.

\*\*\*
**Vad jag vill åstakomma.**
Jag vill lista alla poster från \[competence\] en gång. Om användaren i fråga har just den kompetensen så blir det TRUE, annars FALSE.

Are you with!?

\*\*\*
Detta går idag att åstakomma via en-fråga-i-frågan, jag skulle gärna villja åstakomma det med endast **en** fråga.

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

## #4 — agneta_rung, 2002-09-03T19:02Z

Så här nånting då:

```
select c.x_name, u.name, 'Ja' as Kompetens
from competence c, users u
where exists 
  (select * from competenceX where x_userId = u.id and x_competenceId = c.id)
union
select c.x_name, u.name, 'Nej'
from competence c, users u
where not exists 
  (select * from competenceX where x_userId = u.id and x_competenceId = c.id)
```

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

## #5 — Eclipse, 2002-09-04T12:30Z

Intressant upplägg. Jag ska kolla det!

Jag kan tillägga att jag kör Access och jag fattar inte din kod helt och hållet, men med lite trixande kanske man kan få det att fungera i alla fall...

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

## #6 — agneta_rung, 2002-09-04T17:23Z

Eclipse, jag är övertygad om att vi tillsammans skulle kunna få detta att fungera... ;) 

Jag har förstås inte hela problembilden klar för mig! Jag vet inte om du i Access har möjlighet att testköra min SQL-sats direkt mot databasen och se vad du får för resultat - utan kringliggande kod?! Jag har ju bara lagt till en kolumn där det står Ja eller Nej beroende om kombinationen Användare - Kompetens existerar eller ej! SQL-frågan var bara tänkt som en hjälp för att komma vidare. Den behöver sannolikt kompletteras med nå'n "order by" och/eller nå'n "distinct" kanske och en del ASP-kod, eller nå't, för att nå dit du vill...

Kom igen med mer fakta så fixar vi det nog (du och jag eller nå'n annan på WF)!!

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

## #7 — Eclipse, 2002-09-05T14:19Z

"SQL-frågan var bara tänkt som en hjälp för att komma vidare."

Sorry för slow response...

Jag ska skärpa mig!

"... from competence c, users u ...."

Jag hade faktiskt glömt detta tillvägagångssättet. Tack för tipset! Det drar ner volymen kod rejält! :-)

Jag har tyvärr inte haft möjlighet att sätta mig in i denna biten sedan jag postade tråden. Still Stand-By so to say!

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

## #8 — Eclipse, 2002-09-05T15:09Z

Här är rätt fett med kod. Jag väljer att ta med allt så du kan få en överblick. 

De markerade delarna är alltså det som jag försöker optimera bort. Lite mer överskådligare kod skulle inte skada! :-)

```
[b]SQL = "SELECT x_ID, x_firstname, x_lastname, x_company FROM [users] WHERE [x_view] = TRUE AND [x_customer] = TRUE;"[/b]
set mySQL = Conn.Execute(SQL)
on error resume next
[b]myGetRow = mySQL.GetRows()[/b]

IF IsArray(myGetRow) THEN
FOR j = 0 to UBound(myGetRow, 2)

	[b]TMP = "SELECT * FROM [fromStaffToCustomer] WHERE [x_jobID] = " & request("ID") & " AND [x_customerID] =" & myGetRow(0,j) & ";"[/b]
	set myTMP = Conn.Execute(TMP)
	on error resume next
	[b]IF myTMP.EOF THEN
		x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
		& "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Lägg till leverantör""></A>"
	ELSE
		x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
		& "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Ta bort leverantör""></A>"
		x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
	END IF[/b]

	' ## TABLE
	response.write "<TABLE WIDTH=""360"" BORDER=""0"" CELLSPACING=""0"" CELLPADDING=""0""><TR>" & vbCRLF

	[b]' ## X_VIEW
	IF request("ID") = "" THEN
		response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15""> </TD>" & vbCRLF
	ELSE
		response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15"">" & x_view & "</TD>" & vbCRLF
	END IF[/b]

	' ## NAME
	response.write "<TD WIDTH=""150"" CLASS=""button""><A HREF=""#"" onClick=""MM_openBrWindow('/production/mysettings/address.asp?ID=" & myGetRow(0, j) & "','Adress','width=400,height=500')"">" _
	& "<IMG SRC=""/admin/pics/icons/address.gif"" WIDTH=""15"" HEIGHT=""12"" BORDER=""0"" TITLE=""Visa adress""></A> " _
	& myGetRow(1, j) & " " & myGetRow(2, j) &"</TD>" & vbCRLF

	' ## COMPANY
	response.write "<TD WIDTH=""150"" CLASS=""button"">" & myGetRow(3, j) & "</TD>" & vbCRLF

	' ## ADDRESS
'	response.write "<TD WIDTH=""30""><A HREF=""#"" onClick=""MM_openBrWindow('/production/mysettings/address.asp?ID=" & myGetRow(0, j) & "','Adress','width=400,height=500')"" TITLE=""Visa adress"">"
'	response.write "<IMG SRC=""/admin/pics/icons/address.gif"" WIDTH=""15"" HEIGHT=""12"" BORDER=""0"" TITLE=""Visa adress för leverantör""></A></TD>" & vbCRLF
	response.write "<TD WIDTH=""30""> </TD>" & vbCRLF

	' ## END OF TABLE
	response.write "</TR></TABLE>" & vbCRLF

NEXT
END IF
```

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

## #9 — LarsG, 2002-09-05T15:19Z

Har du testat frågan med union? Jag ser ingen anledning att den inte skulle fungera i Access.

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

## #10 — Eclipse, 2002-09-05T16:06Z

Vad tror du om detta?

```
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company FROM users u " _
& " WHERE u.x_view = TRUE AND u.x_customer = TRUE "
& " UNION (SELECT f.x_ID, f.x_name FROM fromStaffToCustomer f WHERE f.x_ID = " & request("ID") _
& " AND f.x_customerID = u.x_ID);"
```

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

## #11 — agneta_rung, 2002-09-05T16:36Z

Öööh! :q Jag ser inte sambandet mellan SQL--frågan i ditt senaste inlägg och det problem du från början presenterade... så härmed släpper jag mitt engagemang i denna tråd!!

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

## #12 — Eclipse, 2002-09-06T07:34Z

Jag mjukstartar.

Det är samma projekt, samma typ av problem fast på en annan sida med färre poster inblandade.

I min ursprungliga fråga är det **tre** tabeller inblandade, i denna är det **två** tabeller, men fortfarande samma problem. 

```
[b]TMP = "SELECT * FROM [fromStaffToCustomer] WHERE [x_jobID] = " & request("ID") & " AND [x_customerID] =" & myGetRow(0,j) & ";"[/b]
	set myTMP = Conn.Execute(TMP)
	on error resume next
	[b]IF myTMP.EOF THEN
		x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
		& "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Lägg till leverantör""></A>"
	ELSE
		x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
		& "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Ta bort leverantör""></A>"
		x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
	END IF[/b]

...
[b]	' ## X_VIEW
	IF request("ID") = "" THEN
		response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15""> </TD>" & vbCRLF
	ELSE
		response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15"">" & x_view & "</TD>" & vbCRLF
	END IF[/b]
```

Här har jag ställt en fråga-i-fråga. Koden här illusterar hur jag frågar efter en post och beroende på det skriver kod till sidan. Jag gör en fråga-i-frågan och **Frågar efter  poster som inte finns...** vilket är namnet på tråden.

Beklagar mina dåliga talager att i skrift uttrycka ett problem!

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

## #13 — agneta_rung, 2002-09-06T20:05Z

Skam den som ger sig!!  :P 

Här kommer ett nytt förslag utifrån ditt "fett med kod"-inlägg.

Betänk att jag inte kan asp nå't vidare... :p . De delarna har jag bara kopierat från din kod!!

```
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company, 1 
FROM users u
WHERE u.x_view = TRUE 
AND u.x_customer = TRUE
AND EXISTS (
  SELECT * 
  from fromStaffToCustomer
  where x_jobID = " & request("ID") & "
  and x_customerID = u.x_ID)
UNION
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company, 0 
FROM users u
WHERE u.x_view = TRUE 
AND u.x_customer = TRUE
AND NOT EXISTS (
  SELECT * 
  from fromStaffToCustomer
  where x_jobID = " & request("ID") & "
  and x_customerID = u.x_ID)"

set mySQL = Conn.Execute(SQL)
on error resume next
myGetRow = mySQL.GetRows()

IF IsArray(myGetRow) THEN
FOR j = 0 to UBound(myGetRow, 2)

  IF myGetRow(4, j) = 0 THEN
    x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
    & "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20""   HEIGHT=""16"" BORDER=""0"" TITLE=""Lägg till leverantör""></A>"
  ELSE
    x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
    & "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Ta bort leverantör""></A>"
		x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
  END IF

    .
    .
   etc

NEXT
END IF
```

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/52022-fråga-efter-poster-som-inte-finns
