---
title: "SQL fråga utifrån vald post"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/74146-sql-fråga-utifrån-vald-post"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "KalsongCesar"
published: "2003-04-15T10:22:44.000Z"
updated: "2003-04-16T15:03:54.000Z"
replies: 14
views: 342
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/74146-sql-fråga-utifrån-vald-post"
---

# SQL fråga utifrån vald post

## #1 — KalsongCesar, 2003-04-15T10:22Z

Nu måste jag fråga igen..

Jag har tre orter A B C.
Jag vill plocka ut alla alternativ som A kan kopplas ihop med. Utifrån dessa vill jag ta ut alla ortar som svaret kan kopplas ihop med och uppfyller mitt vilkor.

Tex
A = Malmö.
Från malmö kan man nå stockholm och köpenhamen.
vilka av dessa orter kan man nå ort C ifrån som kan vara lule.

Så med andra ord ska jag resa från Malmö till lule fast den kombinationen kräver en ort mellan.

jättetacksam för svar

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

## #2 — Sebbe, 2003-04-15T10:30Z

Skulle vilja veta två saker:

- Hur ser tabelluppbyggnaden ut?
- Hur ser informationen i kolumnerna ut?

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

## #3 — KalsongCesar, 2003-04-15T10:34Z

det är en tabell med gilltighetstid från och till från ort avgångstid och till ort med ankomst tid.. + lite lull lull..

Men det är de jag använder..
nu kör jag

```
SELECT * FROM Tidtabell WHERE (Dep = 'malmö' or Arr = 'lule') AND (From <=#2003-04-17# and To >=#2003-04-17# )
```

vet inte om det blir så bra

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

## #4 — Engine^, 2003-04-15T10:47Z

Ett förslag... jag vet inte om det passar dig :)

tblOrt
\-------
ID
Namn

tblDestinationer
\--------------------
IDStart
IDDest

Säg att vi har dessa städer:
ID  Namn
\-------------------
1   Malmö
2   Stockholm
3   Köpenhamn
4   Sundsvall
5   Lule

och lite värden i tblDestinationer över vart man kan åka
IDStart IDDest

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

## #5 — KalsongCesar, 2003-04-15T11:01Z

Jag kan tyvärr inte påverka utformningen av databasen riktigt som jag vill den importeras externt.
Men i princip så är den helt platt och ser väl ut som tblDestinationer fast de är ju inte unika kombinationerna utan 
resväg 1 3 kan stå felra ggr, beroende på om vilken dag det är och om det kaske finns 2 avggr på samma dag.

gr.. jag kan inte tänka klart, så svårt ska det ju inte vara

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

## #6 — aasah, 2003-04-15T11:06Z

För att du ska kunna få hjälp att formulera en fråga i SQL måste du tala om hur din databas ser ut. Svara på Sebbes frågor, så att vi har en chans att hjälpa dig! Alltså: Vilka tabeller har du? Exakt hur ser infon i tabellerna ut?

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

## #7 — KalsongCesar, 2003-04-15T11:12Z

ok. Jag trodde jag gjorde det
jag har
From - Gilltigt från datum
To - giltig till datum
Dep - Avgångsort
Std - avgångstid
Arr - Ankomstort
Sta - Ankomst tid

så ser upplägget och det är en himla massa rader med informationen,
text

```
From/To/Dep/Std/Arr/Sta
2003-05-05/2003-05-28/ARN/18:30:00/HFS/19:20:00
2003-06-23/2003-06-27/HFS/09:10:00/TYF/09:25:00
2003-06-10/2003-06-19/HFS/09:10:00/TYF/09:25:00
```

från arn till hfs kan man åka och från hfs till tyf kan man åka..
men från arn till tyf går det inte så bra utan mellanlandning i hfs

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

## #8 — KalsongCesar, 2003-04-15T13:49Z

är det ingen som kan ge tips.. 
Om jag utifrån en sökning plockar fram min "från ort" och alla dess möjliga "till orter" och grupperar dem och lägger den i temporär tabell..

sen så tar jag varje möjlig "till ort" och anger dem som "från ort" och med till ort det som jag önskar åka till.. 

låter ju omständigt..

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

## #9 — Engine^, 2003-04-15T14:09Z

```
SELECT * FROM tabell t1
INNER JOIN tabell t2
ON t2.Arr = t1.Arr
WHERE t1.Dep = '[i]från ort[/i]' AND t2.Dep = '[i]till ort[/i]'
```

Kan det bli rätt?

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

## #10 — KalsongCesar, 2003-04-15T14:31Z

nje.. 
men jag tror vi är tanken på spåret.

jag får fäljande vid sökning på frånort arn

```
Dep	Arr
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	HFS
ARN	PLQ
ARN	PLQ
ARN	PLQ
ARN	PLQ
ARN	PLQ
ARN	OSK
ARN	OSK
ARN	OSK
ARN	OSK
ARN	OSK
ARN	HLF
ARN	HLF
ARN	HLF
ARN	HLF
ARN	HLF
ARN	OSK
ARN	OSK
ARN	OSK
ARN	OSK
ARN	OSK
```

Så det finns 30 avgångar med 4 olika ankomstorter. De är ju de ankomstorterna jag vill åt för att se vilka av dessa som har en ankomstort enligt mitt kriterium.

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

## #11 — LarsG, 2003-04-15T16:26Z

Om du vill hitta alla möjliga rutter dvs, med godtyckligt antal mellanlandningar så är det inte så lätt.

Om man vill begränsa sig till högst en mellanlandning så går det hyfsat enkelt

```
  select Std,' Direkt ',Sta 
    from timeTable
   where now() between [FROM] and [TO]
    and Dep = 'Arn'
    and Arr = 'Tyf'
  union
   select s.std, s.arr, m.sta
     from timeTable s , join timeTable m  
    where s.dep = 'Arn'
      and s.arr = m.dep
      and m.arr = 'Tyf'
      and now() between s.[FROM] and s.[TO]
      and now() between m.[FROM] and m.[TO]
```

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

## #12 — KalsongCesar, 2003-04-16T07:08Z

jag är ute efter den där lösningen..
tack LarsG, men jag får fel i From instruktionen..

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

## #13 — LarsG, 2003-04-16T07:49Z

```
 select Std,' Direkt ',Sta 
    from timeTable
   where now() between [FROM] and [TO]
    and Dep = 'Arn'
    and Arr = 'Tyf'
  union
   select s.std, s.arr, m.sta
     from timeTable s , timeTable m  
    where s.dep = 'Arn'
      and s.arr = m.dep
      and m.arr = 'Tyf'
      and now() between s.[FROM] and s.[TO]
      and now() between m.[FROM] and m.[TO]
```

Smög med sig ett join för mycket

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

## #14 — KalsongCesar, 2003-04-16T08:23Z

Lars G.
Tack, det funkar.
vad sägs om en sån här sql?

```
SELECT *
FROM tidtabell
WHERE arr ="tyf" and  dep IN (SELECT tidtabell.Arr FROM tidtabell GROUP BY tidtabell.Arr, tidtabell.Dep HAVING tidtabell.Dep="ARN");
```

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

## #15 — LarsG, 2003-04-16T15:03Z

Det har ingen påverkan på resultatet om du använder group by i en subselect. Group innebär bara att du tar bort duplikat  men om du använder IN (subselect) så blir det sant om subselecten returnerar minst en post.

Att använda having med normala (dvs ingen aggregatfunktion) villkor är inte bra (prestandamässigt).

Så din fråga är likvärdig med 

```
SELECT *
FROM tidtabell
WHERE arr ='tyf' and  dep IN 
   (SELECT Arr 
       FROM tidtabell
      where dep = 'arn' )
```

vilket ger samma resultat (frånsett kontroller med from/to) som den andra frågan i min union.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/74146-sql-fråga-utifrån-vald-post
