php - 从一个表中获取数据并与另一个基本的包含值进行比较
问题描述
- 这个问题会持续更新
我有 2 个不同的数据库和 2 个表
这是表.1
Table.1
username | date | phone number | rank |
user1 | 2021 | xxx xxx xxxx | ALL |
user2 | 2021 | xxx xxx xxxx | river, domain, CW, road|
user3 | 2021 | xxx xxx xxxx | river, CW |
user4 | 2021 | xxx xxx xxxx | owl, gold, moon, DD |
还有Table.2
Table 2
rank | CODE | locations | contain | price | exp |
river | WT-2 | xxx xxx xx| JRCOW20 | 500.00 | --- |
road | CC2W | xxx xxx xx| ------- | 200.00 | --- |
owl | 568T | xxx xxx xx| JCCW120 | 300.00 | --- |
owl | CCCD | xxx xxx xx| CWFGTFF | 100.00 | --- |
CW | PTR1 | xxx xxx xx| 09WWKAL | 100.00 | --- |
CW | 1RRW | xxx xxx xx| WFR4444 | 300.00 | --- |
但用户根据要求分别要求所有项目
搜索排名。使用表 2 的值并与表 1 进行比较
在以下情况下如何使用具有结果的 Sql 命令:
登录,user2
所以我会得到
rank | CODE | locations | contain | price | exp |
river | WT-2 | xxx xxx xx| JRCOW20 | 500.00 | --- |
road | CC2W | xxx xxx xx| ------- | 200.00 | --- |
CW | PTR1 | xxx xxx xx| 09WWKAL | 100.00 | --- |
CW | 1RRW | xxx xxx xx| WFR4444 | 300.00 | --- |
但是如果当用户登录时user4
比我会得到
rank | CODE | locations | contain | price | exp |
owl | 568T | xxx xxx xx| JCCW120 | 300.00 | --- |
owl | CCCD | xxx xxx xx| CWFGTFF | 100.00 | --- |
我试图找出 SQL 部分,并测试了以下作品;但没有运气:
SELECT
*
FROM
[DB-1].[Table.1]
JOIN
[DB-2].[Table.2]
WHERE
[DB-2].[Table.2]
IN
(
[DB-1].[Table.1].[Col-Rank]
)
但到目前为止,其中一些结果要么是空的,要么只是输出单个结果:
login as *user2* result:
user2 | 2021 | xxx xxx xxxx | river, domain, CW, road|
river | WT-2 | xxx xxx xx| JRCOW20 | 500.00 | --- |
或者
login as *user4* result:
user4 | 2021 | xxx xxx xxxx | owl, gold, moon, DD |
owl | 568T | xxx xxx xx| JCCW120 | 300.00 | --- |
我不明白我应该在哪里更改细节,老实说,这对我来说是一个非常新的问题
目前使用 MySQl 7.4,由 PhpMyAdmin 也使用 PHP 7.4
PhpMyAdmin 可能有很多非正式的声明;仍在努力使一切正常;任何帮助将不胜感激!
以下是我尝试过的问题:
sql-query-multiple-records-against-one-column-value-need-to-compare-another
解决方案
IMO rank
(即“河流、域、CW、道路”)应该是一个额外的表。
或者您可以使用REGEXP
. 但我认为这将花费大量资源。我不是专家。
示例(未测试):
SELECT
`tbl2`.*
FROM `Table1` AS `tbl1`
JOIN `Table2` AS `tbl2` ON `tbl2`.`rank` REGEXP REPLACE(`tb1`.`rank`,', ','|')
WHERE `username` = :username
;
计划是按名称“找到”表 1 中的用户,
然后加入表2rank
用于REGEXP
检查该行是否匹配 fe 'river|domain|CW|road'
(“河流”或“域”或“CW”或“道路”)。
REPLACE 是为了得到,
一个|
.
但就像我说的 - 我不是专家 =)
推荐阅读
- javascript - 在快速路由器和中间件之间传递数据
- c# - 枚举标志负值
- python - 从参数中解析对象的内容时实例化对象的正确方法
- python - 如何使用 Python 求解 Lambert W 函数?
- java - 为什么 main 方法不打印任何东西?
- codenameone - 用手指移动代号一组件
- math - 给定飞机的航向,纬度,经度,如何从飞机上找到一个点的纬度和经度?
- c - 根据c中的输入拆分二进制数字序列
- django - 表单生成的 url 中的 django 错误,url 不匹配。在我的查询搜索之间出现不需要的逗号
- google-bigquery - 从通用 ODBC 数据库到 BigQuery 的数据移动