2010-09-10 4 views
0

Tout d'abord, je ne sais pas si cela devrait être fait dans Coldfusion ou MySQL.Comment comparer les résultats de deux requêtes et trouver des correspondances entre les deux?

J'ai une requête d'éléments qui récupère des éléments dans un catalogue. J'ai une deuxième requête qui récupère des éléments de la liste d'un utilisateur. Mon objectif est de savoir si un élément est déjà présent dans la liste d'un utilisateur lors de la sortie de la première requête (le catalogue d'éléments).

items(itemId, itemName) 

users_items(itemId,memberId) 
+0

Quelle est votre sortie attendue? Parce que quelqu'un peut (et va) commander plus d'un du même article - cela produira des doublons lorsque vous joignez la table 'ITEMS'. –

+0

Non, mon intention est d'afficher une liste d'ajout ou de retirer du bouton de liste ... donc je ne veux pas explicitement qu'une personne ajoute le même article plus d'une fois. – Mohamad

Répondre

4

Un article peut-il appartenir à plusieurs catalogues? Si c'est le cas, vous ne pouvez pas dire quel catalogue basé sur la table USERS_ITEMS pour rendre la liste correctement.

Sinon, je pense que vous pourriez faire avec l'aide d'un LEFT JOIN:

SELECT i.itemid, 
      i.itemname, 
      ui.memberid 
    FROM ITEMS i 
LEFT JOIN USERS_ITEMS ui ON ui.itemid = i.itemid 
         AND ui.memberid = ? 

... which'll retourner un résultat comme (j'omis itemname):

itemid memberid 
-------------------- 
1  1234 
2  NULL 
3  1234 

Où vous voyez NULL, vous indique que le membre n'a pas commandé l'article. Dans Coldfusion, il suffit de configurer la page pour gérer l'option d'ajout ou de suppression de manière appropriée en fonction de la présence d'une valeur ou de la valeur NULL.

  • seulement permettre à quelqu'un de "ajouter à la liste" lorsque la memberid est null (IE: point 2)
  • si memberid est pas null (articles IE 1 & 3) --provide l'option "supprimer de la liste".
+0

Désolé, je trouve cela un peu difficile à suivre ... un élément peut appartenir à plus d'un utilisateur, et un utilisateur peut avoir plusieurs éléments ... mes tables sont des utilisateurs (userid), items (itemid), users_items (userid, itemid) ... Je vais essayer de désinformer ce que vous m'avez donné, mais je dois dire que je me bats un peu ... – Mohamad

+1

@Mel: J'ai mis à jour pour fournir un resultset, et rafraîchit l'algorithme un peu plus. Je ne connais pas Coldfusion, ou je fournirais un extrait. –

+0

génial! Je viens de tester ça et ça marche! – Mohamad

Questions connexes