Le titre n'est pas très explicite.

J'ai une table IMMEUBLE à laquelle est liée une table FINANCEMENT.

Un immeuble peut avoir plusieurs financement, différenciés par une date de début et un type de financement différent. Il ne peut y avoir deux financement avec un même type pour la même date de début.

Ce que je cherche à faire, c'est dans un premier temps de rechercher les immeubles ayant un financement d'un certain type pour une date de début données, puis de comparer le résultat obtenu avec tous les immeubles, afin de détecter quels immeubles n'ont pas ce type de financement pour une période déterminée.

J'ai donc écrit 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
SELECT imm.ID
    , imm.NUMERO_DOSSIER
    , imm.LETTRE_DOSSIER
FROM IMMEUBLE AS imm
WHERE imm.ID
    NOT IN (SELECT imm.ID 
    , fin.IMMEUBLE_ID_FK
    , fin.TYPE_FINANCEMENT_ID_FK
    FROM IMMEUBLE AS imm
    INNER JOIN FINANCEMENT AS fin
    ON fin.IMMEUBLE_ID_FK = imm.ID
    WHERE DATE_FORMAT(fin.DATE_DEBUT, '%d.%m.%Y') = '01.07.2013'
        AND fin.TYPE_FINANCEMENT_ID_FK IN (23))
GROUP BY imm.ID
    , imm.NUMERO_DOSSIER
    , imm.LETTRE_DOSSIER
ORDER BY imm.NUMERO_DOSSIER
    , imm.LETTRE_DOSSIER;
Ici, le résultat que j'aimerais obtenir, ce sont tous immeubles qui n'ont pas un financement de type 23 pour la période commençant le 01.07.2013.

Exécutées individuellement, elles fonctionnent.

J'ai cependant l'erreur suivante :

Error Code: 1241. Operand should contain 1 column(s)
Je ne vois pas mon erreur (et il y en a peut-être plusieurs).

Merci d'avance pour votre aide.