Ok j'ai essayé de regarder partout stackoverflow, et la solution la plus proche, j'ai trouvé est la suivante: mysql AND clause on same column multiple timesMYSQL comparer les valeurs de mêmes colonnes
Mais je ne peux pas utiliser des déclarations et « ayant » la syntaxe ne fonctionnera pas parce que de groupe par. Il doit y avoir une solution simple à cela.
Les 2 tables ressemble à ceci (simplifié):
utilisateurs:
uid name
1 person 1
2 person 2
3 person 3
catégories:
uid value
1 actor
1 musician
2 actor
3 dancer
4 musician
4 dancer
Je veux obtenir le uid de ceux qui sont 2 valeurs au en même temps. Par exemple, je veux obtenir l'UID qui est un acteur et un musicien. Pas seulement une valeur, mais les deux doivent être requis!
D'abord, j'essayé ceci:
SELECT users.uid, users.name
FROM
users
LEFT OUTER JOIN categories ON users.uid = categories.uid
WHERE (categories.value = 'actor' AND categories.value = 'musician')
GROUP BY u.uid;
Bien sûr, ne fonctionne pas depuis une ligne ne peut pas avoir 2 valeurs.
Est-ce que quelqu'un connaît une solution?
Celui-ci fait fonctionner pour moi. Mon db est plus compliqué que ça, mais j'ai simplifié le problème, et je dois le "traduire" à l'API DB de Drupal, c'est peut-être pourquoi ça n'a pas marché, ou peut-être parce que j'ai rejoint 5 autres tables ... Je ne sais pas, ma première pensée était que "group by" ne donne que 1 rang, donc count serait toujours 1, mais je ne sais pas ... –