mysql - 使用多个表进行查询

标签 mysql sql select union

SELECT keyword 
FROM
(
    SELECT tutor_Name AS keyword FROM t
    UNION
    SELECT subject_name AS keyword FROM s
    UNION
    SELECT institute_name AS keyword FROM i
) s
WHERE keyword LIKE '%$queryString%' 
LIMIT 10

此查询根据关键字显示包含主题、导师姓名、城市的列表。现在我需要用更多的值修改这个查询。例如,列表中有一个导师姓名,我想显示他/她的当前城市、他/她的个人资料图片等。所以我需要从我的城市表、地址表、tutorImages 表中获取这些值。所以任何人都可以帮我做这个查询?

最佳答案

试试这个它会起作用:

$q = "SELECT keyword, col, city_name, image_name, tutor_code 
            FROM (
                SELECT tutor_name AS keyword, 'Tutors' AS col, IFNULL(c1.city_name, '') city_name, IFNULL(ti.image_name, '') image_name, tutor_code FROM tutors AS t
                LEFT JOIN address a ON t.address_id = a.address_id
                LEFT JOIN city c1 ON a.city_id = c1.city_id 
                LEFT JOIN tutor_images ti ON t.tutor_id = ti.tutor_id and ti.image_type = 'profile'
                UNION
                SELECT subjects AS keyword, 'Subject' AS col, '' city_name, '' image_name, '' tutor_code FROM subject
                UNION
                SELECT city_name AS keyword, 'City' AS col, '' city_name, '' image_name, '' tutor_code FROM city
                UNION
                SELECT institute_name AS keyword, 'Institute' AS col, '' city_name, '' image_name, '' tutor_code FROM institutes
            ) s
          WHERE keyword LIKE '%$queryString%' 
          LIMIT 10";

关于mysql - 使用多个表进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579189/

相关文章:

php - MySQL 中包含 CMS 输出文本正文的列的最佳类型是什么?

mysql - XML 到 MySQL : Only adding half of the items?

mysql - 比较日期同一列 mySQL Laravel

node.js - 与nodejs和sqlite3同步的SELECT查询

javascript - 如何获取最终用户看到的 <option> 文本

mysql - 如何通过一个 SQL 查询获得多个 SUM?

mysql - 具有低基数第二列的复合索引是否足以影响性能以至于应该使用它?

使用游标的 mysql 过程

mysql - 从 MySql 数据库中检索分层数据

sql - 如何使用sql命令INSERT输入新行