首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个表中获取数据并与另一个基本的包含值进行比较

从一个表中获取数据并与另一个基本的包含值进行比较
EN

Stack Overflow用户
提问于 2021-10-21 01:47:09
回答 2查看 127关注 0票数 0

我有两个不同的数据库和两个表格

这是Table.1

代码语言:javascript
复制
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    |

还有表2

代码语言:javascript
复制
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 | --- |

但用户要求所有的项目分别根据

使用ranking.values搜索Table.2并与Table.1进行比较

在以下情况下,如何使用具有结果的Sql命令:

user2的身份登录,这样我就可以

代码语言:javascript
复制
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的身份登录时,我会得到

代码语言:javascript
复制
rank    | CODE | locations | contain | price  | exp |
owl     | 568T | xxx xxx xx| JCCW120 | 300.00 | --- |
owl     | CCCD | xxx xxx xx| CWFGTFF | 100.00 | --- |

我试图找出SQL部件,下面的工作已经过测试,但没有结果:

代码语言:javascript
复制
SELECT
    *
FROM
    [DB-1].[Table.1]
JOIN 
    [DB-2].[Table.2]
WHERE
    [DB-2].[Table.2] 
IN
    (
    [DB-1].[Table.1].[Col-Rank]
    )

但到目前为止,它们中的一些要么是空的,要么只是输出的单一结果,如:

代码语言:javascript
复制
login as *user2* result:
user2    | 2021 | xxx xxx xxxx | river, domain, CW, road|
river    | WT-2 | xxx xxx xxxx | JRCOW20 | 500.00 | --- |

代码语言:javascript
复制
login as *user4* result:
user4    | 2021 | xxx xxx xxxx | owl, gold, moon, DD    |
owl      | 568T | xxx xxx xxxx | JCCW120 | 300.00 | --- |

我不明白我该在哪里修改细节,老实说,这对我来说是个新问题

目前使用的是MySQl 7.4,PhpMyAdmin也使用PHP7.4

PhpMyAdmin中可能会有很多非正式的声明;仍然在努力使一切正常工作;任何帮助都会很感激!

以下是我尝试过的问题:

sql-query-multiple-records-against-one-column-value-need-to-compare-another

mysql-check-if-a-column-has-values-based-on-another-column

mysql-how-to-check-for-a-value-in-all-columns

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-25 01:44:57

我觉得这很好,根据.在()中;

此外,排名的结果来自于另一个应用程序,老实说,我还没有线索向另一个团队要求它。

signal作为表2我使用了与MySQL query finding values in a comma separated string相同的方法

代码语言:javascript
复制
SELECT
    *
FROM
    `signal`
WHERE
    `rank` IN(
        'river',
        'domain',
        'CW',
        'road'
    );

但是我在PHP文件中工作,所以这就是为什么它看上去不像预期的那样工作。

代码语言:javascript
复制
PHP file
$sig = str_replace(',' , '','', $_SESSION['sig']);

代码语言:javascript
复制
$sig = str_replace(',' , '","', $_SESSION['sig']);
票数 0
EN

Stack Overflow用户

发布于 2021-10-21 02:16:10

国际海事组织的rank (即‘河流,域,CW,公路’)应该是一个额外的桌子。

或者你可以使用REGEXP。但我认为这会花费很多资源。我不是专家。

示例(未经测试):

代码语言:javascript
复制
SELECT
    `tbl2`.*
FROM `Table1` AS `tbl1`
JOIN `Table2` AS `tbl2` ON `tbl2`.`rank` REGEXP REPLACE(`tb1`.`rank`,', ','|')
WHERE `username` = :username
;

计划是按名称“查找”表1中的用户,

然后在rank上加入表2

使用REGEXP检查该行是否与f.e匹配。‘河域域连续波路’

(“河流”或“域”或“CW”或“道路”)。

替换方法是将,转换为|__。

但就像我说的-我不是专家

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69654901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档