MySQL LEFT JOIN avec l'option valeur dans le deuxième tableau
J'ai deux tables: projects
et user_licenses
.
Je voudrais saisir l'ensemble de la liste des projets à partir de la base de données, ainsi que l'utilisateur actuel de l'état de la licence. Les licences de table a un champ d'ID utilisateur, que je vérifie à l'encontre d'un $_SESSION
variable pour la valeur. La chose est, ils pourraient ne pas avoir une licence, ou d'un non-connecté visiteur peut voir la liste des projets. Ma question est la suivante: Comment puis-je obtenir les données de la table de gauche toujours écran, mais seulement saisir les données de la ligne de la table de droite lorsque certaines conditions sont remplies?
La requête que j'ai en ce moment est: est-ce
SELECT Projects.*,
UserLicenses.*
FROM Projects
LEFT JOIN UserLicenses ON Projects.id = UserLicenses.project_id
WHERE UserLicenses.user_id = 12
ORDER BY name ASC
- Je pense que vous avez besoin de fournir des échantillons de données & attendu la sortie de communiquer ce que vous êtes après.
Vous devez vous connecter pour publier un commentaire.
Ajouter toutes les conditions supplémentaires à la
on
clause de jointure gauche. Ils ne vont affecter la table jointe.Ce sera le retour de projets sans les licences.
Déplacer le UserLicenses condition de l'endroit OÙ, et à la condition de JOINTURE. Par l'avoir dans le cas OÙ une partie, vous ne verrez jamais de ceux "de gauche" lignes car ils sont filtrés à l'écart.
Vous pouvez également utiliser probablementWHERE (UserLicenses.user_id = 12 OR UserLicenses.user_id IS NULL)
Ne pas le faire. Il suffit de déplacer à la condition de jointure comme ceci:
LEFT JOIN UserLicenses ON
(Projects.id = UserLicenses.project_id AND UserLicenses.user_id = 12)
Vous pouvez utiliser
LEFT JOIN
Si ses conditions de match, alors la valeur est null sinon valeur de la montre.