使用 MySQL。
我有两张桌子。表 A 和表 B。
表 A 的一些值具有与表 B 相关的 ID。此 ID 在表 A 中标识为 crm_field,在表 B 中标识为 parent_id。
我试着做这个查询。
select *
from tableA inner join tableB ON tableA.crm_field=tableB.parent_field
WHERE tableA.id = '75' AND
tableA.category != 'null' AND
tableA.category != 'No Category'
我的预期结果是,tableA 中满足 where 要求的数据将与 tableB 的数据一起显示,tableB 的 parent_id 与 tableA 中 crm_field 的数据相同。
实际结果是显示 tableB,但包含值的 parent_id 除外。似乎它在 crm_field = 0 和 parent_id = 0 时进行了查询,当我希望它在 crm_field 具有在 parent_id 中也找到的 22 之类的实际值时进行查询。尝试这样做:
select *
from tableA inner join tableB ON tableA.crm_field=tableB.parent_field
WHERE tableA.id = '75' AND
tableA.category != 'null' AND
tableA.category != 'No Category' AND
tableA.crm_field != '0'
但它只显示了我需要添加到 tableA 的 tableB 中的数据。
有没有办法使用连接查询来做到这一点?
如果不是,我不妨做一个双重查询。
谢谢
样本输出:
tableA
id|name|crm_field|category
0|dog|0|hi
1|cat|22|hi
2|bear|0|null|
tableB
id|name|parent_id|
0|wild|22|
1|foo|0|
显示应该是这样的:
0|dog|0|hi
1|cat|22|hi
2|wild|22
-如果这甚至可能吗?
要达到这一点,我要在这里完成的是:
crm_field 有一些值。
但如果查询在 crm_field 中看到 22 或 21 或两者,则应显示在 tableB 中找到的相应值。
要知道如果 crm_field == 21 或 22 我这样做了,它将执行另一个查询以将相应的值添加到数组中。但我想用尽可能少的代码来实现这一点,因此我正在尝试加入。