SQL Sélection de lignes avec des valeurs multiples
J'ai ces 2 tables:
Table SW_ITEM
:
ID SWID ITEM_ID
1 1 99
2 2 99
3 5 99
4 2 100
5 1 100
6 1 101
7 2 102
Table ITEM
:
ID FILENAME
99 abc
100 def
101 geh
102 ijk
colonne ITEM_ID
est une clé étrangère vers la colonne ID
de table ITEM
.
Donc, je veux que tous les noms de fichiers qui ont le SWID "1" ET "2" (ce qui serait ITEMID 99 et 100, de sorte que leurs noms de fichiers sont "abc" et "def")
Ici, je dois dire qu'il est possible que ITEM_ID
a plus d'une entrée avec la même SWID, je ne peux donc pas utiliser cette SQL:
SELECT ITEM_ID FROM SW_ITEM
WHERE SWID IN (1,2)
GROUP BY ITEM_ID
HAVING COUNT(ITEM_ID) = 2
Donc, il y a une autre possibilité pour obtenir toutes les entrées qui ont le SWID 1 et 2 (création d'une jointure pour chaque SWID est pas une solution - car avec de nombreuses entrées, ce serait vraiment lent)
Salutations
OriginalL'auteur rimes | 2013-07-29
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
DISTINCT
dansCOUNT
et le comteSWID
au lieu deITEM_ID
:Veuillez caisse démo.
Pour récupérer tous les noms de fichiers, essayez:
Démo
Vous devez compter
DISTINCT SWID
au lieu deITEM_ID
; Veuillez commander la démo.lorsque vous essayez la démo, il fonctionne très bien 🙂 mais quand je l'ai essayer avec mon SQL-je encore obtenir un résultat vide. Peut-être qu'il a quelque chose à voir avec la version sql - je suis à l'aide de firebird
Avez-vous changé de
COUNT(DISTINCT ITEM_ID)
enCOUNT(DISTINCT SWID)
?vous êtes un génie 🙂 merci
OriginalL'auteur Yang
J'ai un petit problème différent où je trouver une personne avec des entrées multiples dans le même tableau basé sur les e-mail pour que la solution ci-dessus ne fonctionne pas pour moi. Vous pouvez essayer d'utiliser la suite,
Essayer ce j'espère que ça fonctionne 🙂
OriginalL'auteur Rishabh Agarwal