我有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

由于col1col3也在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/

10-10 02:22