J'ai deux tables MySQL.
Le premier est appelé "choisi" et consiste en des champs ID, user_id et widget_id. p>
L'autre s'appelle "widgets" et inclut plusieurs choses, y compris widget_id . P>
J'ai créé un filtre de sorte que l'utilisateur puisse afficher des widgets qu'il a choisi ou des widgets qu'il / elle n'a pas choisi. Pour ceux qu'il a choisi, j'utilise ceci: p> Cependant, je ne peux pas comprendre comment afficher ceux qu'il n'a pas choisi. Cela ne fonctionne pas (affiche tout): p> Comment puis-je faire cela? p> p>
3 Réponses :
logique booléenne: (ab) ' code> est identique que a' + b ' code>
Fondamentalement, vous souhaitez sélectionner toutes les lignes de BTW: Je recommande d'utiliser la nouvelle syntaxe de jointure sur la syntaxe des tables délimitées de virgule. Il est plus facile de lire et de comprendre, surtout quand il s'agit de jointures extérieures. P> P> widgets code> qui n'ont pas de ligne associée dans choisi code> pour le $ $ $ user_id code>. Vous pouvez y accomplir avec une jointure extérieure code> à la recherche des lignes qui ne correspondaient pas dans la table code> choisies code>. Quelque chose comme ceci:
SELECT w.*
FROM WIDGET w
LEFT JOIN CHOSEN c ON c.widget_id = w.widget
AND c.user_id = $user_id
WHERE w.widget IS NULL
Merci! J'ai fini par utiliser "Select * à partir de widgets w où w.widget_id pas dans (sélectionnez w.widget_id à partir de widgets w, choisi c, où c.widget_id = w.widget_id et c.user_id = $ user_id)"