Toon posts:

[Postgres] Veld uit main query gebruiken in subquery

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op dit moment de volgende query gemaakt:

SQL:
1
2
3
4
5
6
7
8
SELECT fk_cd, count(fk_cd) AS cdcount, (SELECT count(*)
                                        FROM rental
                                        GROUP BY fk_cd
                                        HAVING count(fk_cd) > cdcount
                                        ORDER BY count(fk_cd) DESC) AS pos
FROM rental
GROUP BY fk_cd
ORDER BY cdcount DESC


Als ik nu echter deze query ga uitvoeren krijg ik de volgende melding:

ERROR: Attribute "cdcount" not found

Het lijkt er dus op dat ik in m'n subquery geen veld kan gebruiken uit de main query. Iemand die me hier mee kan helpen? Ik heb al wat rond zitten zoeken, maar ik kon niet echt iets bruikbaars vinden.

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Probeer het zo eens:

code:
1
2
3
4
5
6
7
8
SELECT r1.fk_cd, count(r1.fk_cd), (SELECT count(r2.*)
                                        FROM rental r2
                                        GROUP BY r2.fk_cd
                                        HAVING count(r2.fk_cd) > count(r1.fk_cd)
                                        ORDER BY count(r2.fk_cd) DESC) AS pos
FROM rental r1
GROUP BY r1.fk_cd
ORDER BY r1.cdcount DESC

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 27 juni 2003 @ 15:56:
Probeer het zo eens:

code:
1
2
3
4
5
6
7
8
SELECT r1.fk_cd, count(r1.fk_cd), (SELECT count(r2.*)
                                        FROM rental r2
                                        GROUP BY r2.fk_cd
                                        HAVING count(r2.fk_cd) > count(r1.fk_cd)
                                        ORDER BY count(r2.fk_cd) DESC) AS pos
FROM rental r1
GROUP BY r1.fk_cd
ORDER BY r1.cdcount DESC
Hmmz, deze wil hij in ieder geval wel uitvoeren, maar 'k krijg nu Null als waarde voor 't pos veld :?.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 08-08 15:51
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT DISTINCT
    r.fk_cd,
    a.aantal,
    (
        SELECT COUNT(*) + 1
        FROM
            (
                SELECT count(fk_cd) AS aantal
                FROM rental
                GROUP BY fk_cd
                HAVING count(fk_cd) > a.aantal
            ) b
    ) AS positie
FROM
    rental r,
    (
        SELECT fk_cd, count(fk_cd) AS aantal
        FROM rental
        GROUP BY fk_cd
    ) a
WHERE
    a.fk_cd = r.fk_cd
ORDER BY
    a.aantal DESC;

Verwijderd

Topicstarter
jochemd schreef op 27 juni 2003 @ 21:54:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT DISTINCT
    r.fk_cd,
    a.aantal,
    (
        SELECT COUNT(*) + 1
        FROM
            (
                SELECT count(fk_cd) AS aantal
                FROM rental
                GROUP BY fk_cd
                HAVING count(fk_cd) > a.aantal
            ) b
    ) AS positie
FROM
    rental r,
    (
        SELECT fk_cd, count(fk_cd) AS aantal
        FROM rental
        GROUP BY fk_cd
    ) a
WHERE
    a.fk_cd = r.fk_cd
ORDER BY
    a.aantal DESC;
Hmmz, okeej, dat werkt inderdaad. Moest wel ffies goed kijken hoe 't nou precies zat, maar 'k geloof da'k 't begrijp. Bedankt in ieder geval :).