2011-04-21 5 views
3

Ok, disons que j'ai une table comportant trois colonnes. La première colonne est un identifiant unique, la seconde est des noms d'utilisateur, et la troisième est celle des éléments que les utilisateurs possèdent.Sélection de valeurs en double basées sur des valeurs distinctes dans une autre colonne

Ce que je voudrais faire est de sélectionner des valeurs de la rangée d'éléments que deux noms d'utilisateur distincts possèdent. Comment pourrais-je faire cela? Donc, pour l'amour hypothétique, disons que je veux voir quels sont les éléments que Bob et Ruth possèdent.

Toute aide serait grandement appréciée.

Y a-t-il un moyen de poster des tableaux pour donner un exemple de ce dont je parle?

+1

Que voulez-vous dire que la troisième colonne contient l'élément ** s **? Est-ce une sorte de liste délimitée? Si c'est le cas, ce sera difficile à moins de normaliser vos tables. –

+0

La colonne des éléments est-elle une clé étrangère à une liste d'éléments? Peut-il exister deux lignes pour le même nom d'utilisateur et l'article? – Thomas

+0

Hé les gars, non, un utilisateur peut posséder un objet une fois. Les deux lignes sont des clés étrangères reliant deux tables. –

Répondre

2

Sur la base de ce que je pense que votre structure de la table est ...

SELECT i.itemid, 
     i.description 
FROM items i 
     JOIN useritemrelationship r 
     ON i.itemid = r.itemid 
     JOIN users u 
     ON u.userid = r.userid 
WHERE u.name in ('Ruth', 'Bob') 
GROUP BY i.itemid 
HAVING COUNT(DISTINCT r.userid) = 2 
+0

Salut Martin, est-ce qu'il y a une chance que tu puisses m'expliquer ça un peu? Que signifient exactement t1 et t2? –

+0

Non, je n'en ai pas tenu compte car c'est la première fois que j'en ai entendu parler! Dois-je supposer quelque chose comme 'nom d'utilisateur (nom d'utilisateur, nom)' et 'items (itemid, description)' et 'useritemrelationship (userid, itemid)' –

+0

Oui précisément. Désolé pour ma mauvaise capacité descriptive :(, vous n'avez aucune idée de combien vous m'aidez en ce moment.Je travaille actuellement sur les 4 réputation supplémentaires dont j'ai besoin pour vous upvote.Lol –

0

Je pourrais suggérer la création d'une nouvelle table pour les éléments avec au moins trois champs: itemID (si les noms d'éléments ne sont pas uniques) , itemName et ownerID. Ensuite, une requête à partir de la nouvelle table:

SELECT itemName FROM items WHERE ownerID='ruths id' OR ownerID='bobs ID' 

Cela contribuerait également à mettre en œuvre la normalisation qui est généralement une étiquette propre/organisée à suivre lors de l'établissement d'une base de données.

+0

Eh bien comment je l'ai mis en place, j'ai une table qui décrit les éléments, y compris le nom, et l'ID de l'article est transféré dans le tableau que j'ai décrit ci-dessus en utilisant une clé étrangère. La table que je recherche est pour chaque instance de propriété d'un élément dans l'autre table. Cette table existe donc pour définir la relation entre la table users et la table items. –

Questions connexes