Recherche de tables multiples dans MySQL à l'aide d'un mot clé
Question :
Dans une base de données avec trois tables (messages, sujets et commentaires), chacune contenant des champs « contenu » et « titre », comment pouvons-nous effectuer une recherche LIKE dans toutes les tables en utilisant un mot clé ? Comment distinguer la table d'origine de chaque résultat ?
Solution :
Pour rechercher plusieurs tables à l'aide d'un mot-clé en PHP et MySQL, nous pouvons utiliser une requête UNION :
$query = "(SELECT content, title, 'msg' as type FROM messages WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%') UNION (SELECT content, title, 'topic' as type FROM topics WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%') UNION (SELECT content, title, 'comment' as type FROM comments WHERE content LIKE '%" . $keyword . "%' OR title LIKE '%" . $keyword ."%')"; mysql_query($query);
Cette requête rassemble les résultats de chaque table en une seule sortie. Le champ 'type' ajouté à chaque ligne sert d'identifiant pour la table dont elle provient. Après avoir exécuté cette requête, nous pouvons parcourir les résultats et déterminer la table d'origine en fonction de la valeur « type ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!