---
title: "Hämta ut alla värden som matchar."
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/184717-hämta-ut-alla-värden-som-matchar"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Sjodahl"
published: "2010-09-26T17:41:04.000Z"
updated: "2010-09-27T05:08:16.000Z"
replies: 7
views: 633
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/184717-hämta-ut-alla-värden-som-matchar"
---

# Hämta ut alla värden som matchar.

## #1 — Sjodahl, 2010-09-26T17:41Z

Hej,

Det blev en liten kass rubrik kom jag på ;)

Jag har en tabell som ser ut enligt nedan:

> id	ProblemId	StatusId	StartDate	 StopDate
> 96	29	        1	        2010-09-01 2010-09-10
> 97	29	        1	        2010-09-10 2010-09-24

Och sedan har jag en sök fråga där man skriver in två stycken datum t.ex. 2010-09-10 och 2010-09-20.

Och vill ha fram en SQL fråga som plockar ut alla rader som finns med inom sök intervallet.

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

## #2 — nitro2k01, 2010-09-26T18:14Z

Du vill ha ut alla överlappningar, va? Dvs, någon dag i ärendet faller inom sökintervallet?

```
SELECT * FROM tabell
WHERE StartDate <= '$searchendate' AND StopDate >= '$searchstartdate';
```

Edit: Nu förutsatte jag PHP som språk, men annars får du infoga sökvariablerna på rätt sätt för språket ifråga.

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

## #3 — b242569, 2010-09-26T18:36Z

Om det ska vara datumen i frågan tror jag det då blir (utan att PHP är nödvändigt):

SELECT \* FROM tabell
WHERE StartDate \>= '2010-09-10' AND StopDate \<= '2010-09-20';

Fungerar det inte då med datum inom ' ' så pröva utan.

Redigerades när jag kollade \> är större än och \< är mindre än. Borde logiskt vara detta som tar fram datum mellan ett startdatum och ett slutdatum.

Redigiringen tog lite tid medan jag tänkte. Fint att det orndade sig i alla fall, men utan PHP är det väl satsen med \< och \> rätt placerade det ska vara?

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

## #4 — Sjodahl, 2010-09-26T18:51Z

Ser ut att fungera, konstigt nog så såg min lösning ut så ifrån början men tyckte inte jag fick med allt, men ser ut att haft fel ;)

Stort tack!

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

## #5 — Sjodahl, 2010-09-26T19:08Z

Hittade nu vad det var som felade lite innan.

Att alltid så är inte "StopDate" satt utan kan vara null tills den blir satt, och sålänge den är null så är den så att säga aktiv och bör räknas med.

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

## #6 — nitro2k01, 2010-09-26T19:41Z

> **[b242569 skrev:](https://www.webforum.nu/p/1518056)**
>
> Om det ska vara datumen i frågan tror jag det då blir (utan att PHP är nödvändigt):
> 
> SELECT \* FROM tabell
> WHERE StartDate \>= '2010-09-10' AND StopDate \<= '2010-09-20';
> 
> Fungerar det inte då med datum inom ' ' så pröva utan.
> 
> Redigerades när jag kollade \> är större än och \< är mindre än. Borde logiskt vara detta som tar fram datum mellan ett startdatum och ett slutdatum.
> 
> Redigiringen tog lite tid medan jag tänkte. Fint att det orndade sig i alla fall, men utan PHP är det väl satsen med \< och \> rätt placerade det ska vara?

Fast din kod gör inte samma sak som min. Med din kod måste **hela** det lagrade intervallet vara inneslutet av sökintervallet. Dessutom så går det ju bara att söka efter de fördefinierade datumen om man anger datumen statiskt istället för dynamiskt. Man vill ju kunna fylla i datum i ett formulär och söka.

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

## #7 — nitro2k01, 2010-09-26T19:45Z

```
SELECT * FROM tabell
WHERE StartDate <= '$searchendate' AND (StopDate >= '$searchstartdate' OR StopDate IS NULL);
```

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

## #8 — Sjodahl, 2010-09-27T05:08Z

Perfekt!

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/184717-hämta-ut-alla-värden-som-matchar
