Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql-queryn selittäminen

smarko [02.03.2004 08:51:24]

#

Voisitteko auttaa ymmärtämään alla olevaa mysql-queryä? Menee itselle niin monimutkaiseksi, että järki loppuu kesken. Ei auttanut ohjeet mysql.com:in sivuillakaan. Tarkoitus olisi saada järjesteltyä palautuneet rivit "title":n mukaan, ei "category":n mukaan, mutta ORDER BY:n muuttaminen ei oikein toiminut (skripti ei ilmeisesti osannut käsitellä saatua tietoa).

    $sql = "SELECT (category - " . FIRST_USER_CAT . ") as user_id," . "		'???' as user_name," . "		COUNT(DISTINCT a.aid) as alb_count," . "		COUNT(DISTINCT pid) as pic_count," . "		MAX(pid) as thumb_pid " . "
FROM albums AS a " . "INNER JOIN pictures AS p ON p.aid = a.aid " . "
WHERE approved = 'YES' AND category > " . FIRST_USER_CAT . " " . "$FORBIDDEN_SET " . "
GROUP BY category " . "
ORDER BY category ";

albums -taulukko

aid title pos category
14 "marin albumi" 1 13178
8 "ihme otoksia" 1 11367
4 kuvia 1 11411
5 "uusi albumi" 11409
6 albumi 1 10679
...


pictures -taulukko

pid aid owner_id owner_name title approved
11 4 1411 pekka Koirakuva YES
32 9 2290 lassi Kissakuva YES
31 8 1367 olavi Tyttökuva YES
29 4 1411 pekka Poikakuva YES
40 4 1411 pekka Apinakuva YES
...

leftover [02.03.2004 09:30:14]

#

En nyt sen tarkemmin ala selvittämään tuon rakennetta, mutta lajittelu hoituu käyttämällä a.title. Tämä siksi että lauseessa on sisäinen liitos (INNER JOIN) jolloin tauluille tulee asettaa tarkenne. Tässä tapauksessa tarkenne on albums AS a ja pictures AS p eli jos haluat lajitella albums-taulun titlen mukaan, käytetään a.title. Jos taas pictures-taulun owner_name mukaan, käytettäisiin p.owner_name jne.

smarko [02.03.2004 16:40:27]

#

Kiitoksia, homma roger. Noilla tiedoilla helpottui tuo kyselyn ymmärtäminenkin sopivasti.

Juhis [02.03.2004 18:05:11]

#

Sekä pitää muistaa myös järjestellä noi groupit. Tai siis mitä koitan selittää, että GROUP BY kuntoon.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta