我有2个具有以下结构的表:
// tab1:
| ID | Col1 | Col2 | Col3 | Col4 |
|----|------|------|------|------|
| 1 | Val1 | Val2 | Val3 | Val4 |
| 2 | Val5 | Val6 | Val7 | Val8 |
// tab2:
| Name |
|------|
| Col1 |
| Col3 |
现在,我需要从
tab1
获取所有值,并以某种方式将它们与tab2
列的值结合在一起,以便在前端,所有也在tab1
中出现的tab2
列都是粗体的。用伪代码看起来像这样:
SELECT Col1, COl2, Col3, Col4 FROM tab1, tab2 WHERE ID=1 AND {possibly a left join on tab2}
所需的输出作为表格在前面可能是:
值1:Val1
值2:Val2
值3:Val3
值4:Val4
由于
col1
和col3
也在tab2
中,因此其值应为粗体。所以我只需要带有“标志”的适当查询。然后,在前端,我将循环结果并查找标志。如果设置了该标志,则将该值显示为粗体。
我实际上对数据库结构没有影响。
最佳答案
假设表结构完整并且我们知道所有列名,我们可以执行以下查询以检查值是否存在。
select col1 as col1 ,
(select count(*) from tab2 where name = 'col1') col1_exists,
col2 as col2,
(select count(*) from tab2 where name = 'col2') col2_exists,
col3 as col3 ,
(select count(*) from tab2 where name = 'col1') col3_exists
from tab1;
对于非零“存在”值,我们可以用粗体显示相应的列值。这是SQL Fiddle。
关于php - 将Tab1的列名称与Tab2的1列值连接起来,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35871180/