PHP MySQL:从一列获取数据,但使用单独表中不同列的id

时间:2018-12-10 03:32:16

标签: php mysql sql

这就是我遇到的问题。我有两个单独的表TableA和TableB,TableA有四个列,TableB有两个列。 TableA仅包含ID,而TableB仅包含ID和字符串。所以我需要来自TableB的字符串,但要基于来自TableA的ID

例如:

TableA:

+------+------+-------+------+
| m_id | appi | mainy | desy |
+------+------+-------+------+
| 1    | 6    | 9     | 13   |
+------+------+-------+------+
| 2    | 7    | 10    | 14   |
+------+------+-------+------+
| 3    | 8    | 12    | 15   |
+------+------+-------+------+

TableB

+------+-------+
| t_id | str   |
+------+-------+
| 6    | dude  |
+------+-------+
| 10   | bro   |
+------+-------+
| 9    | lol   |
+------+-------+
| 14   | homie |
+------+-------+

基于上面的表,我需要根据来自TableB的ID(例如SELECT str FROM TableB WHERE t_id = (Ids from TableA WHERE m_id=1))找出实际的字符串。因此,我的预期数据应为'dude'和'lol',因为m_id=1具有两个ID 6和9,而TableB中的那些ID具有字符串'dude'和'lol'。真的很感谢您的帮助,如果有任何混淆,请原谅。我们会尽力解决这个问题。

2 个答案:

答案 0 :(得分:3)

您可以使用TableB到TableA的简单JOIN来执行此操作,其中TableB中的t_id必须是appimainy或{{1 }}来自TableA的给定desy

m_id

输出:

SELECT b.str
FROM TableB b
JOIN TableA a ON b.t_id IN (a.appi, a.mainy, a.desy)
WHERE a.m_id = 1

Demo on dbfiddle

答案 1 :(得分:1)

您可以将exists用于这种类型的逻辑:

select b.str
from tableb b
where exists (select 1
              from tablea a
              where a.m_id = 1 and
                    b.t_id in (a.appi, a.mainy, a.desy)
             );