Avatar billede Slettet bruger
04. september 2006 - 18:00 Der er 3 kommentarer

Brug af alias i ORDER BY

Hej,

Følgende giver fejlen "Unknown column 'cat' in 'order clause'":

SELECT
    id,
    IFNULL(hotel_word_categories_translated.category, hotel_word_categories.category) AS cat
FROM
    hotel_word_categories
LEFT JOIN
    hotel_word_categories_translated
    ON
        id = category_id
        AND
        language_id = 'xxx'
ORDER BY
    cat
COLLATE 'utf8_danish_ci'

Jeg bliver nødt til at gentage hele IFNULL delen i ORDER BY for at få det til at virke:

SELECT
    id,
    IFNULL(hotel_word_categories_translated.category, hotel_word_categories.category)
FROM
    hotel_word_categories
LEFT JOIN
    hotel_word_categories_translated
    ON
        id = category_id
        AND
        language_id = 'xxx'
ORDER BY
    IFNULL(hotel_word_categories_translated.category, hotel_word_categories.category)
COLLATE 'utf8_danish_ci'

Det er ikke så kønt. Hvorfor virker en reference til alias'et cat ikke i ORDER BY?
Avatar billede Slettet bruger
04. september 2006 - 18:01 #1
InnoDB tabeller. MySQL 5.0.24.
Avatar billede teepee Nybegynder
05. september 2006 - 08:59 #2
Jeg tror måske at det er ansi sql standarden der siger det, fordi det ikke er en "rigtig" kolonne. Det samme er gældende for andre databaser.
Avatar billede Slettet bruger
06. september 2006 - 23:59 #3
SELECT COUNT(*) AS foo FROM bar ORDER BY foo - virker jo fint.

Kan du underbygge dit gæt med en reference til dokumentation?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester