---
title: "SQL-sats funkar i MySQL 5.0, men ej 4.1"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/155874-sql-sats-funkar-i-mysql-5-0-men-ej-4-1"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Denkan"
published: "2007-01-11T14:52:15.000Z"
updated: "2007-01-11T20:53:37.000Z"
replies: 4
views: 339
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/155874-sql-sats-funkar-i-mysql-5-0-men-ej-4-1"
---

# SQL-sats funkar i MySQL 5.0, men ej 4.1

## #1 — Denkan, 2007-01-11T14:52Z

Tjenixen,
Har stött på ett MySQL-problem jag inte tycker är riktigt *rättfärdigt*  :OO 

Strukturen är enkel; jag har bilder som läggs in i olika kategorier (även underkategorier).

Inga konstigheter med tabellerna:

```
[B][Categories][/B]
CatID    int(11)  auto_increment               
RefCatID int(11) 
Name     varchar(100)

[B][Images][/B]
ImageID  int(11)  auto_increment               
CatID    int(11)  
FileName varchar(255) 
(...)
```

Då jag vill plocka ut lite värden, inkl. antalet underkategorier och bilder som finns, från en särskild kategori använder jag följande SQL-sats:

```
SELECT 
   c1.CatID, 
   c1.RefCatID, 
   c1.Name, 
   [red](SELECT COUNT(*) FROM categories c2 WHERE c2.RefCatID=c1.CatID) As Subcats, 
   (SELECT COUNT(*) FROM images WHERE CatID=c1.CatID) As Images [/red] 
FROM categories c1 
WHERE c1.RefCatID=0 
ORDER BY CatID asc
```

Detta fungerar fint på min jobbdator där jag kör MySQL 5.0. När den körs på webbhotellet som använder MySQL 4.1 klagar den dock på rödmarkerad text.
Är jag ute och snurrar som skriver som jag gör? Någon som har bättre lösning på hur jag får med antal underkategorier och antal bilder i SQL-satsen?
Jag antog att det inte är speciellt krävande iom det endast hämtar en liten COUNT() från de andra tabellerna, men jag kanske har fel?
Har denna typ av SELECT-möjlighet inte varit tillgänglig förrän i version 5, kanske?

Felmeddelandet ser ut som de flesta SQL-fel:

> You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT(\*) FROM images WHERE CatID=c1.CatID) As Images FRO

 

Uppskattar om någon kan upplysa mig =)
Tackar på förhand!

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

## #2 — Compusa, 2007-01-11T14:59Z

```
   (SELECT COUNT(*) FROM categories c2 WHERE c2.RefCatID=c1.CatID) As Subcats, 
   (SELECT COUNT(*) FROM images WHERE CatID=c1.CatID) As Images
```

Jag tror det beror på att mySQL 4.1 inte har stöd för **as**, dvs att du namnger resultatet av en aggregatfunktion.

/r så är det inte. mySql 4.1 har stöd för det också.

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

## #3 — emission, 2007-01-11T16:04Z

Prova med

```
SELECT 
   c1.CatID, 
   c1.RefCatID, 
   c1.Name,
   COUNT(DISTINCT c2.CatID) as SubCats,
   COUNT(DISTINCT i.ImageID) as Images
FROM categories c1 
LEFT OUTER JOIN categories c2 ON c2.RefCatID=c1.CatID
LEFT OUTER JOIN images i ON i.CatID=c1.CatID
WHERE c1.RefCatID=0
GROUP BY c1.CatID, 
   c1.RefCatID, 
   c1.Name
ORDER BY c1.CatID asc
```

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

## #4 — Denkan, 2007-01-11T16:45Z

**emission**, det verkar fungera fantastiskt bra!
Tackar så mycket för hjälpen!

Vet du orsaken till att min snutt inte fungerade? 
Inte bra att skriva som jag gjort?

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

## #5 — emission, 2007-01-11T20:53Z

Njae, MySQL 4.1 var den första versionen av MySQL som kunde hantera subqueries, och den är väl helt enkelt lite nybörjare och inte så bra på det.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/155874-sql-sats-funkar-i-mysql-5-0-men-ej-4-1
