select name, group_concat(hobbies) as all_hobbies
from test1,test2
where test1.id = test2.ref_id
and test1.id in (select ref_id
from test2
where hobbies = 'walking')
group by name
3 Réponses :
Je rejoindrais les deux tables. Ensuite, ID Sélectionnez la concaténation à l'aide de (champ A || champ B) et placez ma restriction dans la clause WHERE. P>
Je n'ai pas installé MySQL sur cette machine, mais essayez cette requête, je pense que cela devrait fonctionner. Vous pouvez penser à la clause code> sous forme de où code> clause de votre groupe par code>.
Votre nom me donnera le résultat pour les personnes ayant des passe-temps marchant mais pas avec le nom 'Robin'. Donc, +1 pour avoir
@Derek, vous pouvez utiliser des alias dans avoir code>, mais pas dans où code>, la raison étant que celle-ci est évaluée en dernier, tous les alias sont connus, tandis que tous les alias sont connus, alors que le où la clause code> peut être exécutée lorsque l'alias n'est pas encore résolu.
Voir Modifier - il vous suffit d'ajouter à la clause où la clause de la vérification du nom
Vous pouvez également utiliser avoir trouvé_in_set ('' walking ', hobbies) code>, cela frappera juste marcher code> mais rejette dogwalking code>.
Il peut être accompli par:
having all_hobbies like '%walking%' or name like '%robin%'