J'ai trois tables, les deux premières assez standard:Comment interroger deux tables selon que l'enregistrement existe ou non dans un tiers?
1) PRODUCTS
table:
- pid
- pname, etc
2) CART
table:
- cart_id
- cart_pid
- cart_orderid etc
Le troisième est conçu pour permettre aux gens de mettre les produits qu'ils achètent et de garder des notes sur eux.
3) MYPRODUCTS
Tableau:
- myprod_id
- myprod_pid
PRODUITS. prod_id
= PANIER. cart_prodid
= MYPRODUCTS. Lorsqu'un utilisateur passe une commande, une liste de produits est présentée sur sa commande et il peut éventuellement ajouter ce produit à myproducts. Je reçois les informations nécessaires pour leur faire cela, avec quelque chose de requête comme ceci pour chaque commande:
SELECT cart.pid, products.pname, products.pid
FROM products, cart
WHERE products.pid = cart_prodid
AND cart_orderid=orderid
Ceci est bien la première fois qu'ils commandent. Cependant, s'ils réordonnent par la suite un produit qu'ils ont déjà ajouté à mes produits, il NE devrait PAS leur être possible de les ajouter à nouveau à mes produits. En fait, au lieu de 'Ajouter à Mes Produits' ils doivent voir 'Voir dans MyProducts '.
Je pense que je peux séparer les produits en utilisant deux requêtes:
Produits jamais ajouté à myProducts
En identifiant en quelque sorte si l'utilisateur a le produit dans myProducts déjà, et si oui excluant de la requête ci-dessus.
produits déjà en myProducts
En inversant le processus ci-dessus.
J'ai besoin de pointeurs sur la façon de procéder.
Vous devez modifier les définitions de table dans votre question pour obtenir une certaine cohérence sur pid vs prod_id. Vous feriez également mieux de supprimer le préfixe par table sur les noms de colonnes et d'utiliser le même nom de manière cohérente pour le même attribut dans chaque table. Donc, si vous choisissez prod_id pour identifier le produit, alors vous utiliserez products.prod_id et cart.prod_id et myproducts.prod_id. –
Vous devez également considérer où l'utilisateur est identifié. Vous semblez utiliser le tableau 'panier' à la fois pour la description de la commande (y compris peut-être l'identifiant client) et pour les articles de la ligne de commande - les articles commandés. Le design n'est pas encore entièrement normalisé. Aussi, pour le moment, je ne vois pas les avantages de la table MyProducts; pourquoi ne pas simplement regarder à travers une liste de ce qu'ils ont commandé récemment des charrettes précédentes? Vous mentionnez des 'commentaires', mais vous ne les montrez pas. –