realbasic-nug.fr
[Top] [All Lists]

Re: RealDatabase et SQL?

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: RealDatabase et SQL?
From: olivier corouge <olivier at realsoftware dot fr>
Date: Wed, 29 Aug 2007 16:19:41 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <1188392383 dot 10178 at Basile dot chez-basile dot com>
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--



<Prev in Thread] Current Thread [Next in Thread>