php - Mysql 从不同的表中按名称选择
问题描述
我在 MySQL 中有以下 2 个表:
表设置
|id |name|clientid|
------------------
| 1 | a | 33 |
------------------
| 2 | b | 34 |
------------------
表客户端
|id |clientname |
------------------
| 33 | c |
------------------
| 34 | a |
-----------------
我试图在哪里进行搜索查询,它将始终从第一个表中返回 id。
查询至今:
$this->conn->prepare("SELECT Settings.id as value,
Settings.name as label
FROM Settings
LEFT JOIN client ON Settings.clientid = client.id
WHERE Settings.name LIKE :keyword
OR Settings.id LIKE :keywordid
OR client.clientname LIKE :keywordclient
LIMIT 10");
$stmt->bindValue(':keyword', "%{$this->keyword}%", PDO::PARAM_STR);
$stmt->bindValue(':keywordid', "%{$this->keyword}%", PDO::PARAM_STR);
$stmt->bindValue(':keywordclient', "%{$this->keyword}%", PDO::PARAM_STR);
所以基本上这个想法是以下如果搜索字母a,搜索将在设置中进行搜索以查看keywrod是否是LIKE id或名称,或者它必须搜索并查看客户端表内部,看看它是否像Clientname。结果总是必须是设置表中的 ID,而不是名称或客户端名称作为其他两个页面的标签,具体取决于结果。
在这种情况下,结果必须是两个
value: 1 label: a
value: 2 /*from Settings table*/ label: a /*from the client table*/
任何帮助将不胜感激解决这种情况。
解决方案
ORDER BY Settings.id
通过or添加一个订单ORDER BY value
(忘记是哪一个,哈哈)
SELECT Settings.id as value,
Settings.name as label
FROM Settings
LEFT JOIN client ON Settings.clientid = client.id
WHERE Settings.name LIKE :keyword
OR Settings.id LIKE :keywordid
OR client.clientname LIKE :keywordclient
ORDER BY Settings.id
LIMIT 10
推荐阅读
- javascript - 将子数组中的值打印到表中
- c# - 在运行时不是特定于版本的 Visual Studio 项目参考
- c++11 - C++11中张量的递归索引
- scrapy - 在 Scrapy ItemLoader 中循环
- firebase - 新手bigquery如何从firebase事件中选择多个参数(模式记录,重复)
- perl - 使用 Date::Calc 的年份和日期
- javascript - 我怎样才能让统计框显示在我的threejs画布上?
- swift - 将 viewDidLoad() 或 ViewDidAppear() 中的变量传递给按钮操作
- php - 谷歌地图 api 标记、sql 和 xml
- rest - Servicenow 与 SAP 的集成