yohan at chez-basile dot com wrote:
Je voudrais extraire les lignes d'une Table1 dont le Numéro de référence n'est pas
présent dans la Table 2.
J'ai donc écris une requete SQL
SELECT * FROM Table1 WHERE Table1.NumRef1 NOT IN (SELECT Table2.NumRef2 FROM
Table2)
indépendament du problème que vous rencontrez, Pourquoi ne pas utiliser
LEFT JOIN ?
SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.NumRef1 = Table2.NumRef2
Cela retourne toutes les lignes de Table1 et la ligne de Table2 si le
lien existe.
Si il n'y a pas d'enregistrement correspondant à Table1 dans Table2, les
colonnes de table2 sont à NULL
Il suffit donc d'ajouter une clause WHERE pour éliminer les lignes de
Table1 qui ont une correspondance dans Table 2
WHERE Table2.NumRef2 IS NULL
On obtiendrait donc : SELECT * FROM Table1 LEFT JOIN Table2 ON
Table1.NumRef1 = Table2.NumRef2 WHERE Table2.NumRef2 IS NULL
SI cela peut vous aider en attendant d'identifier le problème que vous
rencontrez.
Cordialement,
Olivier Corouge
--
Olivier Corouge
Support Technique en Français
olivier at realsoftware dot fr - http://www.realsoftware.fr
From Wed 29 Aug 2007 16:48:54 +0200 (CEST)
Return-Path: <realbasic-nug dot fr-bounces at lists dot realsoftware dot com>
X-Original-To: listarchive at realsoftware dot com
Delivered-To: listarchive at realsoftware dot com
Received: by xmail.realsoftware.com (Postfix, from userid 1037)
id 18F993F4D7CF; Wed, 29 Aug 2007 07:49:04 -0700 (PDT)
X-Spam-Checker-Version: SpamAssassin 3.1.1 (2006-03-10) on
www.realsoftware.com
X-Spam-Level:
X-Spam-Status: No, score=-1.5 required=4.5 tests=BAYES_00,FORGED_RCVD_HELO,
NO_REAL_NAME autolearn=no version=3.1.1
Received: from lists.realsoftware.com (m.realsoftware.com [66.116.103.65])
by xmail.realsoftware.com (Postfix) with ESMTP id A1A003F4D7AF;
Wed, 29 Aug 2007 07:49:00 -0700 (PDT)
Received: from real-software-mini.local (localhost [127.0.0.1])
by lists.realsoftware.com (Postfix) with ESMTP id 0C25C5DD9FF;
Wed, 29 Aug 2007 09:48:49 -0500 (CDT)
X-Original-To: realbasic-nug dot fr at lists dot realsoftware dot com
Delivered-To: realbasic-nug dot fr at lists dot realsoftware dot com
Received: from Basile.chez-basile.com (vac26-1-82-242-179-18.fbx.proxad.net
[82.242.179.18])
by lists.realsoftware.com (Postfix) with ESMTP id DCA3B5DD9F4
for <realbasic-nug dot fr at lists dot realsoftware dot com>;
Wed, 29 Aug 2007 09:48:44 -0500 (CDT)
Received: by Basile.chez-basile.com (Postfix, from userid 0)
id 18A3327CCA2; Wed, 29 Aug 2007 16:48:55 +0200 (CEST)
From: yohan at chez-basile dot com
Subject: Re: RealDatabase et SQL?
To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot
com>
Cc:
X-Originating-IP: 192.168.0.241
X-Mailer: Webmin 1.320
Date: Wed, 29 Aug 2007 16:48:54 +0200 (CEST)
Message-Id: <1188398935 dot 11800 at Basile dot chez-basile dot com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="bound1188398935"
X-BeenThere: realbasic-nug dot fr at lists dot realsoftware dot com
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot
com>
Sender: realbasic-nug dot fr-bounces at lists dot realsoftware dot com
Errors-To: realbasic-nug dot fr-bounces at lists dot realsoftware dot com
This is a multi-part message in MIME format.
--bound1188398935
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
olivier corouge wrote ..
yohan at chez-basile dot com wrote:
> Je voudrais extraire les lignes d'une Table1 dont le Num=E9ro de r=E9f=E9rence
n'est pas pr=E9sent dans la Table 2.
>
> J'ai donc =E9cris une requete SQL
>
> SELECT * FROM Table1 WHERE Table1.NumRef1 NOT IN (SELECT Table2.NumRef2
FROM Table2)
>
ind=E9pendament du probl=E8me que vous rencontrez, Pourquoi ne pas utiliser
LEFT JOIN ?
SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.NumRef1 =3D Table2.NumRef2
Cela retourne toutes les lignes de Table1 et la ligne de Table2 si le
lien existe.
Si il n'y a pas d'enregistrement correspondant =E0 Table1 dans Table2, les
colonnes de table2 sont =E0 NULL
Il suffit donc d'ajouter une clause WHERE pour =E9liminer les lignes de
Table1 qui ont une correspondance dans Table 2
WHERE Table2.NumRef2 IS NULL
On obtiendrait donc : SELECT * FROM Table1 LEFT JOIN Table2 ON
Table1.NumRef1 =3D Table2.NumRef2 WHERE Table2.NumRef2 IS NULL
SI cela peut vous aider en attendant d'identifier le probl=E8me que vous
rencontrez.
Cordialement,
Olivier Corouge
--
Olivier Corouge
Support Technique en Fran=E7ais
olivier at realsoftware dot fr - http://www.realsoftware.fr
Euh pourquoi? ben parce que je d=E9bute en SQL ;-)
J'obtiens donc une requete:
SELECT * FROM Selector LEFT JOIN Netia ON Selector.No_SELECTOR =3D
Netia.Numero_Selector WHERE Netia.Numero_Selector IS NULL
et un erreur 7 keyword expected =E0 la sortie...
Je pense que St=E9phane a raison, mon Mac est hant=E9 par des anguilles
cach=E9es sous des roches ;-)
--bound1188398935--
|