Bonjour,

je souhaite faire la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SELECT    cl.id                AS id,
            cl.companyname        AS companyname,
            cl.tvanumber        AS tvanumber,
            cl.trademark        AS trademark,
            cl.address            AS address, -- UDT
            cl.contactname1        AS contactname1,
            cl.contactname2        AS contactname2,
            cl.mobile            AS mobile, -- UDT
            cl.phone            AS phone, -- UDT
            cl.fax                AS fax, -- UDT
            cl.country            AS country,
            COUNT (co.id)        AS nbcomputers
    FROM    clients AS cl
            LEFT OUTER JOIN establishments es ON cl.id = es.client
            LEFT OUTER JOIN computers co ON es.id = co.establishment
    WHERE    cl.id = ?
    GROUP BY
        cl.id,
        cl.companyname,
        cl.tvanumber,
        cl.trademark,
        cl.address,
        cl.contactname1,
        cl.contactname2,
        cl.mobile,
        cl.phone,
        cl.fax,
        cl.country;
Elle est sensée me renvoyer toutes les informations du client citées, y compris l'adresse (qui est un UDT de type AddressType) et les mobile, phone et fax (qui sont des UDT de type PhoneType).

Je sais que, vu que j'utilise un COUNT() dans le select, je dois faire un group by sur tous les autres champs demandés, MAIS si je fais ça, j'ai une erreur comme quoi PostGreSQL ne sait pas comparer mes champs UDT.

De plus, je n'ai jamais utilisé ce type de jointures et s'il y a une erreur dedans, pourriez vous me la signaler ?

Comment résoudre cela ? Un énorme merci si vous réussissez à m'aider

Olivier