Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD 8] Requête SQL sur HF, clause IN

3 réponses
Avatar
mat
Bonjour,

j'ai un comportement que je ne m'explique pas: une requête SQL sur HF
traite une condition "AND" comme un "OR". Avec le code suivant j'ai dans
le résultat des lignes dont la rubrique Balance de InvoiceDetail est
zéro, c'est-à-dire où la 2e condition est fausse (fichiers Invoice et
InvoiceDetail, c-à-d Facture et Lignes de facture ):

SELECT ...
FROM Invoice WHERE Invoice.RecType <= 18 AND Invoice.IDInvoice IN
(SELECT InvoiceDetail.IDInvoice FROM InvoiceDetail WHERE
InvoiceDetail.IDWarehouse = 101) AND Invoice.IDInvoice IN (SELECT
IDInvoice FROM InvoiceDetail WHERE InvoiceDetail.Balance <> 0)

à mon avis, seul les enregistrements de "Invoice" qui ont un
"IDWarehouse" de 101 ET un "Balance" autre que zéro devraient être
inclus. Est-ce que je me trompe ?

Merci
Mat

3 réponses

Avatar
mat
correction:


à mon avis, seul les enregistrements de "Invoice" qui ont un
"IDWarehouse" de 101 ET un "Balance" autre que zéro devraient être
inclus. Est-ce que je me trompe ?



à mon avis, seul les enregistrements de "Invoice" AYANT DES LIGNES
"InvoiceDetails" AYANT un "IDWarehouse" de 101 ET un "Balance" autre
que zéro devraient être inclus. Est-ce que je me trompe ?
Avatar
mat
mat wrote:
correction:


à mon avis, seul les enregistrements de "Invoice" qui ont un
"IDWarehouse" de 101 ET un "Balance" autre que zéro devraient être
inclus. Est-ce que je me trompe ?




à mon avis, seul les enregistrements de "Invoice" AYANT DES LIGNES
"InvoiceDetails" AYANT un "IDWarehouse" de 101 ET un "Balance" autre
que zéro devraient être inclus. Est-ce que je me trompe ?




je pense, j'ai commis une erreur de réflection car, en effet, il n'y a
pas de lien entre les deux conditions. Chacune renvoie juste l'ID si la
condition spécifique est remplie (et le ET devient potentiellement OU).
Auparavant, je faisais la requête sur les deux fichiers et ça marchait
correctement. En raison des lenteurs expérimentées, je l'ai réduit à un
seul fichier. Je devrai alors complètement restructurer la requête et
assembler les conditions sur les lignes :-( . Développer 10 fois plus
rapide est une sale blague quand on travaille avec les requêtes sur HF.
Avatar
Fifou
Vivement qu'ils améliorent ca c'est clair.

"mat" a écrit dans le message de
news:434ad4ec$
mat wrote:
> correction:
>
>
>> à mon avis, seul les enregistrements de "Invoice" qui ont un
>> "IDWarehouse" de 101 ET un "Balance" autre que zéro devraient être
>> inclus. Est-ce que je me trompe ?
>
>
> à mon avis, seul les enregistrements de "Invoice" AYANT DES LIGNES
> "InvoiceDetails" AYANT un "IDWarehouse" de 101 ET un "Balance" autre
> que zéro devraient être inclus. Est-ce que je me trompe ?


je pense, j'ai commis une erreur de réflection car, en effet, il n'y a
pas de lien entre les deux conditions. Chacune renvoie juste l'ID si la
condition spécifique est remplie (et le ET devient potentiellement OU).
Auparavant, je faisais la requête sur les deux fichiers et ça marchait
correctement. En raison des lenteurs expérimentées, je l'ai réduit à un
seul fichier. Je devrai alors complètement restructurer la requête et
assembler les conditions sur les lignes :-( . Développer 10 fois plus
rapide est une sale blague quand on travaille avec les requêtes sur HF.