---
title: "Hur gör jag denna från Access till MySQL?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/133391-hur-gör-jag-denna-från-access-till-mysql"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "magnusfernstrom"
published: "2005-08-28T03:58:53.000Z"
updated: "2005-08-31T19:33:09.000Z"
replies: 10
views: 400
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/133391-hur-gör-jag-denna-från-access-till-mysql"
---

# Hur gör jag denna från Access till MySQL?

## #1 — magnusfernstrom, 2005-08-28T03:58Z

Har följande SQL-sats för att hämta trådar i ett forum, projektet jag nu tagit mig ansvar för använder dock MySQL som databas, och jag har upplevt småproblem med andra SQL-satser p.g.a. det, så jag antar att problemet här också är att det är skrivet för Access, men jag försöker köra det i MySQL. :)

LarsG, eller någon annan, hur gör man för att skriva satsen för MySQL? :e

```
sql_select_threads = "select  f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id," & _
        " max(iif(f2.thread_date is null,f1.thread_date,f2.thread_date))  " & _
        " from forum_threads f1 left outer join forum_threads f2 " & _
        " on f1.thread_id = f2.thread_reply_id " & _
        " where f1.thread_reply_id = 0 " & _
        " group by  f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id" & _
        " order by 7 desc"
```

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

## #2 — @nders, 2005-08-28T06:33Z

Jag hade gett mig på något sånt här:

```
sql_select_threads = "select  f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id," & _
        " max(CASE WHEN f2.thread_date is null THEN f1.thread_date ELSE f2.thread_date END) " & _
        " from forum_threads f1 left outer join forum_threads f2 " & _
        " on f1.thread_id = f2.thread_reply_id " & _
        " where f1.thread_reply_id = 0 " & _
        " group by f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id" & _
        " order by max(CASE WHEN f2.thread_date is null THEN f1.thread_date ELSE f2.thread_date END) desc"
```

Du borde också kunna använda ett alias på den skapade kolumnen, så slipper du ha max-uttrycket i order by också.

```
sql_select_threads = "select  f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id," & _
        " max(CASE WHEN f2.thread_date is null THEN f1.thread_date ELSE f2.thread_date END) AS lastPostDate" & _
        " from forum_threads f1 left outer join forum_threads f2 " & _
        " on f1.thread_id = f2.thread_reply_id " & _
        " where f1.thread_reply_id = 0 " & _
        " group by f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, thread_reply_id" & _
        " order by lastPostDate desc"
```

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

## #3 — magnusfernstrom, 2005-08-28T08:28Z

Anders, du är en ängel! :f Jag ska direkt pröva detta när jag sätter igång med sidan igen. :)

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

## #4 — LarsG, 2005-08-28T13:17Z

```
CASE WHEN f2.thread_date is null THEN f1.thread_date ELSE f2.thread_date END
```

kan skrivas som

```
coalesce(f2.thread_date,f1.thread_date)
```

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

## #5 — magnusfernstrom, 2005-08-30T15:50Z

Argh! Vill ni ha något att bita i? Ni borde i och försig inte ha problem med detta, så bra ni kan detta, men men, jag får inte till det, så jag förklarar problemet och så får vi se om ni fattar hur en SQL-sats skall se ut till den. :)

Jag har olika kategorier (nej sorterade inte via kategorier i den tidigare SQL-frågan, men det ska vara olika kategorier) i ett forum, och i dessa skall givetvis olika trådar hämtas. Sorteringen har ni väl räknat ut, men det ska iallafall sortera efter senaste trådposten, men även efter senaste posten i en tråd, så om en tråd är nypostad skall den ligga högst i forumet, men samtidigt skall en tråd "hoppa upp" om den får ett svar i den.

Följande fält från databasen skall hämtas:

```
[b]thread_id[/b] - trådens unika ID
[b]thread_name[/b] - rubriken på tråden
[b]thread_author_name[/b] - skaparens namn
[b]thread_author_id[/b] - skaparens ID
[b]thread_text[/b] - själva inlägget/tråden
[b]thread_category[/b] - vilken kategori den tillhör
[b]thread_reply_id[/b] - om det är en tråd, är värdet här noll, om det är ett svar är värdet trådens ID, så det är denna som kopplar ihop hela alltet! 
[b]thread_date[/b] - datum
```

Allt eftersom kommer fler värden att hämtas, typ som om tråden är av högre prioritet eller låst, men det ska jag nog kunna hämta ut själv, bara jag fattar hur jag ska få det hela att fungera först. :)

Tror det var allt, kanske någon vänlig själ kan skriva ihop en fin liten SQL-sats som fungerar till mitt forum! :D

mvh,

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

## #6 — Peter S, 2005-08-30T16:13Z

På vilket sätt fungerar inte Anders förslag?

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

## #7 — magnusfernstrom, 2005-08-30T16:53Z

Saken är den att jag inte ens vet om själva SQL-satsen var korrekt om jag hade haft Access, då det är ett klipp och klistra-jobb jag gjort från en tidigare sida som är ett år gammal eller nåt, och därför höll jag inte reda på vilka tabeller som var vad osv. 

Men visst. :) Detta får jag av @nders:

```
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

Column 'thread_reply_id' in field list is ambiguous

/forum_category.asp, line 102
```

På båda satserna.

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

## #8 — Peter S, 2005-08-30T17:19Z

Anledingen till felmeddelandet är att thread_reply_id tillhör både f1 och f2. Med andra ord måste du tala om från vilken av tabellerna kolumnen skall hämtas. Testa detta:

```
sql_select_threads = "select  f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, f2.thread_reply_id," & _
        " max(coalesce(f2.thread_date, f1.thread_date)) AS lastPostDate" & _
        " from forum_threads f1 left outer join forum_threads f2 " & _
        " on f1.thread_id = f2.thread_reply_id " & _
        " where f1.thread_reply_id = 0 " & _
        " group by f1.thread_id, f1.thread_name, f1.thread_author_name, f1.thread_author_id, f1.thread_text, f2.thread_reply_id" & _
        " order by lastPostDate desc"
```

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

## #9 — @nders, 2005-08-30T17:55Z

... och det är ju knappast mitt fel. ;)

Jag tycker nog att det borde ha gett ett felmeddelande i Access-queryn också, men olika dbms rapporterar olika fel (och ibland inte alls.)

(*ambiguous* är förresten ett störtfint sökord.)
Mvh

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

## #10 — magnusfernstrom, 2005-08-30T18:28Z

Tackar PeterS! Skall pröva så fort jag får möjlighet, och @nders: :f (L) Ni andra också. ;)

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

## #11 — magnusfernstrom, 2005-08-31T19:33Z

Det fungerade finfint, tack alla som hjälpte mig! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/133391-hur-gör-jag-denna-från-access-till-mysql
