我有两个不同的数据库和两个表格
这是Table.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 |还有表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 | --- |但用户要求所有的项目分别根据
使用ranking.values搜索Table.2并与Table.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 xxxx | JRCOW20 | 500.00 | --- |或
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
发布于 2021-10-25 01:44:57
我觉得这很好,根据.在()中;
此外,排名的结果来自于另一个应用程序,老实说,我还没有线索向另一个团队要求它。
signal作为表2我使用了与MySQL query finding values in a comma separated string相同的方法
SELECT
*
FROM
`signal`
WHERE
`rank` IN(
'river',
'domain',
'CW',
'road'
);但是我在PHP文件中工作,所以这就是为什么它看上去不像预期的那样工作。
PHP file
$sig = str_replace(',' , '','', $_SESSION['sig']);或
$sig = str_replace(',' , '","', $_SESSION['sig']);发布于 2021-10-21 02:16:10
国际海事组织的rank (即‘河流,域,CW,公路’)应该是一个额外的桌子。
或者你可以使用REGEXP。但我认为这会花费很多资源。我不是专家。
示例(未经测试):
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”或“道路”)。
替换方法是将,转换为|__。
但就像我说的-我不是专家
https://stackoverflow.com/questions/69654901
复制相似问题