---
title: "Endast en rad i subquery (oracle)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/148274-endast-en-rad-i-subquery-oracle"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "yohpops"
published: "2006-06-21T05:22:08.000Z"
updated: "2006-06-26T06:46:04.000Z"
replies: 9
views: 531
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/148274-endast-en-rad-i-subquery-oracle"
---

# Endast en rad i subquery (oracle)

## #1 — yohpops, 2006-06-21T05:22Z

Hej.

Jag har följande lilla fråga

```
SELECT 
  DISTINCT b.SDORNO,
  b.SDCUOR,
  b.SDORST,
  b.SDORSL,
  b.SDYREF as "Beställare",
  b.SDPHNO as "Beställare-telefon",
  a.SYZDVA AS "Kommstatus",
  a.SYSRES AS "Team",
  (SELECT 'X' FROM cusjdta.ztshis c WHERE c.syzdva = '49' AND a.sycono = c.sycono AND a.syorno = c.syorno AND ((a.syrgdt*1000000)+a.syrgtm) > ((c.syrgdt*1000000)+c.syrgtm) and c.syrgdt = (SELECT max(e.syrgdt) FROM cusjdta.ztshis e WHERE e.syzdva = '49' AND a.sycono = e.sycono AND a.syorno = e.syorno )
   and a.syrgdt = (SELECT max(f.syrgdt) FROM cusjdta.ztshis f WHERE f.syzdva = '20' AND a.sycono = f.sycono AND a.syorno = f.syorno )
  ) AS "Markering",
  (SELECT SEZOBJ FROM cusjdta.ZSJOBH z WHERE b.sdcono = z.secono AND b.sdorno = z.seorno AND z.SEJOBN = '001' AND z.SEJBSX = '00') AS "ObjektID",
  (SELECT SEJBSE FROM cusjdta.ZSJOBH z WHERE b.sdcono = z.secono AND b.sdorno = z.seorno AND z.SEJOBN = '001' AND z.SEJBSX = '00') AS "Tilläggsstatus", 
  b.SDCFDA, b.SDCFTM FROM cusjdta.ztshis a, cusjdta.zshead b WHERE a.sycono = 101 AND
  a.syzdva = '20' AND
  b.sdorsl < '49' AND
  a.sycono = b.sdcono AND
  a.syorno = b.sdorno AND
  NOT EXISTS ( SELECT 0 FROM cusjdta.ztshis c WHERE c.syzdva IN ('15', '85') AND
  a.sycono = c.sycono AND
  a.syorno = c.syorno AND
  ((a.syrgdt*1000000)+a.syrgtm) < ((c.syrgdt*1000000)+c.syrgtm) )
ORDER BY b.sdorsl, b.sdorno
```

och vill lägga till detta mellan "markering" och "objektid"

```
  (SELECT  TLTX60 FROM   mvxjdta.osytxl WHERE   tlcono = b.sdcono AND tldivi = b.sddivi AND  tltxid = b.sdtxid and tltxvr='SO79' and tllino <= 1) as "SO79" ,
```

Hur skriver jag för att subqueryn endast ska hämta en rad?
Jag har provat med rownum och limit men får felmeddelande.
rownum fungerar om jag kör frågan för sig.

Det fungerar inte att använda "order by" heller.

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

## #2 — LarsG, 2006-06-21T07:40Z

```
(select min(TLTX60) ...
```

eller

```
(select max(TLTX60) ...
```

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

## #3 — yohpops, 2006-06-21T08:42Z

Funkar verkligen det?
TLTX60 är ett varchar fält.

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

## #4 — LarsG, 2006-06-21T11:55Z

Varför skulle det inte fungera?

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

## #5 — K@llen, 2006-06-21T12:05Z

> **LarsG skrev:**
>
> Varför skulle det inte fungera?

Fungerar säkert, du brukar Veta. Dumma frågor. Av ren nyfikenhet: hur får man fram max eller min på en sträng? Eller förutsätts det att varchar-fältet innehåller numeriska värden?

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

## #6 — LarsG, 2006-06-21T12:43Z

Tja, ... 0 \< 1 \< ... \< 9 \< ... \< A \< B \< C ...

applicera detta tecken för tecken. Numeriska värden i varcharkolumner sorteras alltså inte med avseende på det numeriska värdet.

Det går att ändra den sorteringen med collations.

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

## #7 — yohpops, 2006-06-21T13:02Z

max eller min kommer ge fel rad.

Tabeller osytxl innerhåller textblock uppdelat på olika rader, med olika textradnummer, språkid, textid, textblockid osv.
Ex

```
tltx60	tllino	tltxid	tltxvr
Jag	1	1234	SO79
heter	2	1234	SO79
Johan	3	1234	SO79
Vad	1	4321	SO79
heter	2	4321	SO79
Du?	3	4321	SO79
```

Jag vill ha första raden, alltså "Jag".
Om jag använder max får jag "Vad" och min ger "Du?".

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

## #8 — LarsG, 2006-06-21T15:07Z

då får du istället lägga till villkoret

```
and tllino = (select min(tllino)
 from osytxl q
 where q.tltxid = osytxl.tlxtid
     and q.tltxvr = osytxl.tltxvr)
```

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

## #9 — yohpops, 2006-06-22T05:07Z

> **LarsG skrev:**
>
> då får du istället lägga till villkoret
> 
>
>
> ```
> and tllino = (select min(tllino)
>  from osytxl q
>  where q.tltxid = osytxl.tlxtid
>      and q.tltxvr = osytxl.tltxvr)
> ```

Detta ska jag testa.

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

## #10 — yohpops, 2006-06-26T06:46Z

Det funkar inte.

Fick felmeddelande, men inget sql-syntax fel.

Återkommer med felmeddelandet.
Det tar ca: 40 minuter att få svar på frågan.
Inte så kul att felsöka den..

/RED:
Felmeddelandet:

```
The following error has occurred:
ORA-01652: unable to extend temp segment by 256 in tablespace TEMP_USER
```

Får inget fel om jag tar bort subqueryn..

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/148274-endast-en-rad-i-subquery-oracle
