0
votes

Sélectionnez deux éléments différents s'ils rencontrent des conditions différentes

J'ai un problème de sélection avec MSSQL qui est; xxx

Je veux sélectionner tous les éléments (du tableau A) si une facture a la fois une facture lequel est; itemUniqueno = 3 et itemgroup = xxx , dans la même facture. Voici mon code: xxx

avec ce code, j'ai répertorié tous les éléments qui ont soit itemgroup = xxx et itemUniqueno = 3 mais Je veux rencontrer les deux conditions dans la même facture, comme: xxx

Cette facture rencontre 2 condition, donc je souhaite énumérer ce deuxième élément avec invoceno. Et tous les autres articles qui répondent à cette condition.


3 commentaires

Chers amis, je vois qu'un malentendu se produit sur la requête. Invoiceno est la partie clé de cette requête. Deux conditions se sont connectées avec invoiceno. Si les deux conditions se rencontrent dans le même invoceno, donnez-moi simplement ces articles (avec Invoiceno), sinon ne me donnez pas cet article. Je veux dire, si un article a un groupe de 'xxx', ne me le montre pas seul. Il suffit de me montrer si la même facture a un élément que Uniqueno est «3». Deux éléments doivent être dans la même facture. J'espère que je me suis rendu clair.


S'il vous plaît vérifier la réponse mise à jour


Une ligne de table (un élément) dépendante d'une autre ligne de table (en poste). Un élément doit avoir un groupe de «xxx» et d'un article tiné (une autre ligne de table) doit avoir le pointUniqueno de '3'. Ces deux articles mut ont Sami Invoiceno. Sinon, ne montrez pas que les articles. Donc, un élément dépend d'un autre article dans la même table avec Invoiceno.


5 Réponses :


0
votes

Changez simplement votre ou à un et dans votre clause


0 commentaires

0
votes

Vous pouvez essayer ceci à l'aide d'une jointure intérieure comme indiqué ci-dessous.

SELECT TableA.*
FROM TableA
INNER JOIN (
    SELECT TableA.*
    FROM TableA
    WHERE EXISTS (
            SELECT 1
            FROM TableB
            WHERE TableA.ItemName = TableB.ItemName
                AND TableA.ItemName = 'A'
            )
        AND EXISTS (
            SELECT 1
            FROM TableB
            WHERE TableA.ItemName = TableB.ItemName
                AND TableB.ItemGroup = 'XXX'
            )
    ) TEMP ON TableA.InvoceNo = TEMP.InvoceNo


5 commentaires

dbfiddle.uk/...


J'ai ajouté deux autres articles avec différents invoceno. Le résultat doit me montrer quatre articles comme suit: 1-3 (même invoiceno) et 3-4 (même factoiceno). Mais le résultat ne montre que trois articles. Parce que requête ne correspond pas à la condition de la facturation. Une facture doit contenir deux conditions.


Quelle est la sortie attendue pour votre démo dbfiddle?


Désolé pour ma réponse tardive, je suis si occupé de nos jours. J'ai essayé votre code mais cela a donné un résultat vide.


S'il vous plaît vérifier la démo.



0
votes

Essayez ceci xxx


1 commentaires

Cette requête ne répond pas à l'état de l'équation de Invoiceno. Mon code obtient le même résultat.



1
votes

Vous pouvez utiliser une instruction CASE dans votre clause où la clause plutôt que «ou», votre sortie correspondra à ce que vous avez souhaité avant. Vous pouvez vérifier ma réponse. xxx

Voici une liaison de dbfiddle < / a>

 résultat


2 commentaires

Désolé pour ma réponse tardive en raison de mon travail acharné. Je ne pouvais pas adapter votre requête à la mienne. Vous utilisez Créer une fonction de table, mais mes tables existent. Alors pourriez-vous s'il vous plaît séparé avec créer une pièce et sélectionnez une partie.


J'ai mis à jour ma réponse. Pourriez-vous s'il vous plaît vérifier. @mithderler



0
votes

Si vous souhaitez remplir les deux conditions à la fois, utilisez et mot clé. Si vous souhaitez effectuer une seule condition sur deux, utilisez ou mot clé. xxx


2 commentaires

Cela ne fonctionne pas, car l'élémentUniqueno = 3 n'a pas de groupe de "XXX". Ce sont deux éléments différents.


J'ai mal compris votre question. Je vais mettre à jour la réponse dans un moment