---
title: "sorterings problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/160055-sorterings-problem"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Vinnaren"
published: "2007-05-08T15:02:28.000Z"
updated: "2007-05-09T14:17:15.000Z"
replies: 21
views: 838
page: 1
pages: 2
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/java/160055-sorterings-problem"
---

# sorterings problem

_Sida 1 av 2._

## #1 — Vinnaren, 2007-05-08T15:02Z

Hej

Jag behöver lite hjälp med en SQL sträng.

Har följande SQL:
SELECT auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion

StartDatum innehåller datumet när posten ska börja gällas, datum samt Klockslag.

Langd innehåller antalet dagar (nummer) 

Nu undrar jag om det går att sortera samt räkna ut hur lång tid den aktuella posten ska visas??  tex  1dag 1h 55min kvar innan posten blir inaktuell

Tacksam för all hjälp jag kan få   :stud

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

## #2 — @nders, 2007-05-08T19:18Z

I vanlig ordning: Vilken dbms används?

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

## #3 — Vinnaren, 2007-05-08T19:20Z

MySQL   :bire

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

## #4 — @nders, 2007-05-08T19:39Z

<http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_subtime>

edit: råkade bli fel länk

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

## #5 — Vinnaren, 2007-05-08T20:07Z

haha, oki. men jag lyckades nog med den "andra" länken tror jag iaf.

fick till denna:

SELECT DATEDIFF(CURDATE(),DATE_ADD(StartDatum, INTERVAL Langd DAY)) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion ORDER BY tidKva DESC

men den går inte ner på timmar och minuter. Nu får jag fram tex 5, men jag vill få fram tex 5 dagar, 10 h, 50 min osv.

Hur löser jag det?

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

## #6 — @nders, 2007-05-09T03:08Z

Jag hade tänkt att du använder sub_time() för att ta fram antalet minuter. Sedan använder man applikationen / scriptet för att dela upp det i dagar, timmar och minuter.

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

## #7 — Vinnaren, 2007-05-09T08:15Z

det vill inte fungera med sub_time(). Den räknar bara bakåt i sekunder.

SELECT SUBTIME(StartDatum, Langd) as SlutDatum, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum \<= Now();

vet inte redigt hur jag ska få till SUBTIME.

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

## #8 — @nders, 2007-05-09T08:17Z

Då kan du väl räkna med sekunder? Det är ju bara lite enkel matematik i applikationen för att dela upp till dagar, timmar och minuter.

Du kan ju alltid använda add_time() om det passar bättre, det är lite svårt att veta eftersom du inte visar vad du har i din tabell.

Läs lite i manualen om datum- och tidsfunktionerna så hittar du säkert rätt.

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

## #9 — Vinnaren, 2007-05-09T08:49Z

Löste det med:

SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum \<= Now() ORDER BY tidKvar DESC;

(blir till sekunder)

men nu vill jag att inte att de poster som har minus i tidKvar ska hämtas hur löser jag det??

Har provat med tidKvar \<=0 men fungerar inte

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

## #10 — @nders, 2007-05-09T08:51Z

Om du **inte** vill att de posterna med minus i tidkvar ska hämtas, då är det väl större än/lika med du ska använda i din WHERE-sats?

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

## #11 — Vinnaren, 2007-05-09T08:58Z

oki, har vänt på den, men får felmeddelandet:

Unknown column 'tidKvar' in 'where clause'

WHERE StartDatum \<= Now() AND tidKvar \>='0'

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

## #12 — @nders, 2007-05-09T09:38Z

Om det inte funkar att ange det skapade namnet får du ange hela uttrycket i where-satsen. Dessutom ska du ju inte ha apostrofer runt nollan, det är ju ett tal.

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

## #13 — Vinnaren, 2007-05-09T10:21Z

nu funkar det:D

en annan liten fråga på samma sql fråga. Jag ska använda den till sök med men den jag har nu vill inte fungera

SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum \<= Now() AND Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) \>=0 AND

det är något fel på %.

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

## #14 — @nders, 2007-05-09T10:23Z

Du har ju inte med något som har med sökning att göra?
Jag ser inget % någonstans?

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

## #15 — Vinnaren, 2007-05-09T11:50Z

x( oj, fick visst inte med allt

SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum \<= Now() AND Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) \>=0 AND Rubrik like % ? % OR Beskrivning like % ? %"

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

## #16 — @nders, 2007-05-09T11:58Z

Du ska ha apostrofer runt strängar. Dessutom, hur får du dit frågetecknen? 
I tillägg, du **måste** knyta ihop dina OR-villkor för sökningen med parentes, annars räcker det att det sista villkoret går igenom, utan att något av de andra stämmer.

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

## #17 — Vinnaren, 2007-05-09T12:19Z

ok, har nu följande

SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum \<= Now() AND Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) \>=0 AND (Rubrik like '% ? %' OR Beskrivning like '% ? %')

? fås genom:

ps.setString(1, text);
ps.setString(2, text);

men den fungerar inte som det är nu:
Parameter index out of range (1 \> number of parameters, which is 0).

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

## #18 — @nders, 2007-05-09T12:30Z

Då får du visa någon kod. Vad är det för språk du använder? Ditt sista problem är inte med SQL.

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

## #19 — Vinnaren, 2007-05-09T12:37Z

ok, koden är i java:

```
public void sok (String katID, String sok) throws Exception
{
	int ID = Integer.parseInt(katID);
             String text = sok;
			

	if(!(ID==0))
	{
	
	String sql = "SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum <= Now() AND Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) >=0 AND katID = ? AND (Rubrik like '% ? %' OR Beskrivning like '% ? %')";
						
	conn = getConnection();
	ps = conn.prepareStatement(sql);
	ps.setInt(1, ID);
	ps.setString(2, text);
	ps.setString(3, text);
	rs = ps.executeQuery();	
´     }
       else
      {
	String sql = "SELECT Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) as tidKvar, auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE StartDatum <= Now() AND Time_To_Sec(TIMEDIFF(DATE_ADD(StartDatum, INTERVAL Langd DAY), Now())) >=0 AND (Rubrik like '% ? %' OR Beskrivning like '% ? %')";
						
	conn = getConnection();
	ps = conn.prepareStatement(sql);
	ps.setString(1, text);
	ps.setString(2, text);
	rs = ps.executeQuery();	
}					

}
```

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

## #20 — @nders, 2007-05-09T12:44Z

Ok.

Jag provar att flytta tråden från SQL-forumet till Javaforumet, så får vi hoppas att du får rätt hjälp där med dina prepared statements.

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/java/160055-sorterings-problem  
Nästa sida: https://www.webforum.nu/amne/java/160055-sorterings-problem/page2.md
