我正在尝试将一堆SELECT全部集成到一起。
我有多个表格看起来类似于以下内容:
表:A1
+---+----+----+----+----+
|id | I1 | I2 | I3 | I4 |
+---+----+----+----+----+
| 1 | 5 | 6 | 1 | 3 |
+---+----+----+----+----+
表:A2
+---+----+----+----+
|id | I1 | I2 | I3 |
+---+----+----+----+
| 1 | 3 | 10 | 5 |
+---+----+----+----+
和1个看起来像这样的表:
表:标准
+---+---------+
|id | Name |
+---+---------+
| 1 | 'one' |
| 2 | 'two' |
| 3 | 'three' |
| 4 | 'four' |
| 5 | 'five' |
| 6 | 'six' |
| 7 | 'seven' |
| 8 | 'eight' |
| 9 | 'nine' |
|10 | 'ten' |
+---+---------+
PHP代码
<?php
while(/*"A" tables*/){
$noi = // number of columns in this A table
$id = // id of this A table
$columns = "";
for ($i=1; $i<=$noi; $i++){
$columns = $columns . "A" . $id . ".I" . $i . ", ";
}
$columns = rtrim($columns, ", ");
$sql = "SELECT s.* FROM A" . $id . "
INNER JOIN Standards AS s
ON s.id IN (" . $columns . ")
WHERE A" . $id . ".id=1
ORDER BY s.id ASC";
$result = mysql_query($sql);
}
?>
我想将所有这些SELECTS组合成1.我想我可以运行for循环来生成表的所有名称,但我不确定如何将它们与其他JOIN ON连接起来...... IN(...)就在那里。
我想要生成的结果是:
+---+---------+
|id | Name |
+---+---------+
| 1 | 'one' |
| 3 | 'three' |
| 5 | 'five' |
| 6 | 'six' |
|10 | 'ten' |
+---+---------+
答案 0 :(得分:0)
看看这个解决方案,它应该为你提供如何做到这一点的基础:
select-mysql-rows-but-rows-into-columns-and-column-into-rows
简而言之,您可能希望尝试从每个行的列中选择值作为来自2个表和UNION这些数据集的行,然后将它们加入到查找表中。结果应该是你描述的。 (我假设所有I1,I2,I3等列都代表查找表中的ID)