---
title: "Får inte till en bra SQL(eller rubrik)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/53739-får-inte-till-en-bra-sql-eller-rubrik"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "saw"
published: "2002-09-19T20:08:20.000Z"
updated: "2002-09-25T18:40:03.000Z"
replies: 10
views: 579
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/53739-får-inte-till-en-bra-sql-eller-rubrik"
---

# Får inte till en bra SQL(eller rubrik)

## #1 — saw, 2002-09-19T20:08Z

Jag har i Access via en fråga tagit fram denna SQL:en

```
SQL = "SELECT t_SongTitlar.ArrNo, t_SongTitlar.songtitel, t_SongTitlar.Forfattare, t_SongTitlar.Forfattare2, t_SongTitlar.Forfattare3, t_Album.Album, t_Kategori.Kategori " & _
" FROM t_Kategori INNER JOIN (t_Album INNER JOIN t_SongTitlar ON t_Album.CD_ID = t_SongTitlar.Album) ON t_Kategori.Kat_ID = t_SongTitlar.Kategori " & _
" WHERE t_SongTitlar.songtitel Like '" & strText & "'"
```

Mitt problem är att där det står forfattare( 2 och 3) så är det numeriska värden ifrån en tabell som heter t_forfattare (indexerat for_id som nyckel)
Jag kommer inte på hur jag skall få in det i tabellen, så att jag får in namnen istället för id numren(for_id).
Hjälp tack

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

## #2 — LarsG, 2002-09-19T20:26Z

Jag skrev om det då Access-varianten är väldigt svårläst.

Så, om jag inte har missförstått. 

```
q = _
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "tf1.Forfattare, " & _
       "tf2.Forfattare, " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  t_Kategori tk,t_album ta ,t_songTitlar ts, " & _ 
             "t_forfattare tf1, t_forfattare tf2 " & _
"where  ta.cd_id = ts.album " & _
  "and  ts.kategori = tk.kat_id " & _
  "and  ts.forfattare2 = tf1.for_id " & _
  "and  ts.forfattare3 = tf2.for_id " & _
  "and  t_SongTitlar.songtitel Like '" & strText & "'"
```

Du nämnde aldrig vilken kolumn från t_forfattare du ville hämta så jag gissade.

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

## #3 — saw, 2002-09-19T20:59Z

Hej LarsG och tack.
Jag glömde dock skriva, det är inte på alla låtar som det finns forfattare2 och forfattare3.
Hur får man till det?
Jag får ett fel:
The column prefix 'tf2' does not mach with a table name or alias name used in the query.

Kan det vara ett tomt fält som gör det tro?

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

## #4 — LarsG, 2002-09-19T21:10Z

Felet du får beror på att jag missade en sak i mitt förra inlägg. Jag skrev tf istället för tf2 efter tabellnamnet. (Jag har editerat min post nu.)

Ok, om forfattare2 och forfattare3 kan vara null så finns det lite olika sätt

En variant är att du lagrar 0 i författare2 och författare3 om de inte finns och så lägger du en dummyrad i t_forfattare.

eller så borde följande gå

```
q = _
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare2) , " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare3) , " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  t_Kategori tk,t_album ta ,t_songTitlar ts " & _
"where  ta.cd_id = ts.album " & _
  "and  ts.kategori = tk.kat_id " & _
  "and  t_SongTitlar.songtitel Like '" & strText & "'"
```

eller

```
q = _
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "tf1.Forfattare, " & _
       "tf2.Forfattare, " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  (((t_Kategori tk inner join t_songTitlar ts on ts.kategori = tk.kat_id )" & _
         " inner join t_album ta on ta.cd_id = ts.album) " & _ 
         " left outer join t_forfattare tf1 on ts.forfattare2 = tf1.for_id) " & _
         " left outer join t_forfattare tf2 on ts.forfattare3 = tf2.for_id " & _
"where t_SongTitlar.songtitel Like '" & strText & "'"
```

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

## #5 — saw, 2002-09-19T21:22Z

Tack för din flit LarsG men nu tror jag att det spökar hör hos mig.
Jag får felet:

The column preflix 't_SongTitlar' does not match with a table name or alias used in the query.
Vad menas? Jag har ju en tabel som heter 't_SongTitlar'  och det framgår ju klart och tydligt i SQL:en??

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

## #6 — saw, 2002-09-19T21:23Z

Tack för din flit LarsG men nu tror jag att det spökar hör hos mig.
Jag får felet:

The column preflix 't_SongTitlar' does not match with a table name or alias used in the query.
Vad menas? Jag har ju en tabel som heter 't_SongTitlar'  och det framgår ju klart och tydligt i SQL:en??
Jag har testat alla dina SQL:er nu, och det är ingen skillnad.

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

## #7 — LarsG, 2002-09-19T21:45Z

Lite slarvfel, blir lätt så när man inte kan testa

```
q = _
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare2) , " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare3) , " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  t_Kategori tk,t_album ta ,t_songTitlar ts " & _
"where  ta.cd_id = ts.album " & _
  "and  ts.kategori = tk.kat_id " & _
  "and  [b]ts[/b].songtitel Like '" & strText & "'"
```

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

## #8 — saw, 2002-09-20T05:13Z

Sorry LarsG, nu är vi tillbaka till första början, den visar bara en siffra(for_id).
Jag förstår att du inte kan testa, men att du kan sitta och skriva så här otestat....
Jag är väldigt tacksam att du tar din tid.

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

## #9 — LarsG, 2002-09-20T18:41Z

Hur ser tabellen forfattare ut och hur ser din fråga ut just nu?

Kan du exemplifiera med lite data vad du får ut nu och vad du förväntar dig.

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

## #10 — saw, 2002-09-20T19:03Z

Ledsen om jag har varit otydlig.
Tabellen t_forfattare:
for_id räknare
namn nvachar
(det räcker nog, jag vill bara ha ut namnet här)

```
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare2) , " & _
       "(select Forfattare from t_forfattare where for_id = ts.forfattare3) , " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  t_Kategori tk,t_album ta ,t_songTitlar ts " & _
"where  ta.cd_id = ts.album " & _
  "and  ts.kategori = tk.kat_id " & _
  "and  ts.songtitel Like '" & strText & "'"
```

I tabellen t_songtitlar ligger författarna sparade som ett nummer, som är länkat till tabellen t_forfattare. Jag ville helst kunna i en SQL få fram namnet (så jag slipper ha flera SQL:er i samma SQL)
I bland så är det tre författare, ibland två, men oftast bara en.
Den data som jag vill ha ut är "egenskaperna" på en låt. Alltså namn författare cd-titel kategori mm.

Vad tror du, går det att lösa?

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

## #11 — LarsG, 2002-09-25T18:40Z

```
"SELECT tS.ArrNo, " & _
       "tS.songtitel, " & _
       "tS.Forfattare, " & _
       "(select namn from t_forfattare where for_id = ts.forfattare2) , " & _
       "(select namn from t_forfattare where for_id = ts.forfattare3) , " & _
       "tA.Album, " & _
       "tK.Kategori " & _
 "FROM  t_Kategori tk,t_album ta ,t_songTitlar ts " & _
"where  ta.cd_id = ts.album " & _
  "and  ts.kategori = tk.kat_id " & _
  "and  ts.songtitel Like '" & strText & "'"
```

Problemet var att jag bara gissade vad kolumnen i tabellen t_forfattare hette. I och med att det finns en kolumn som heter forfattare i t_songtitla så valdes den istället.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/53739-får-inte-till-en-bra-sql-eller-rubrik
