我試圖將一堆SELECTs集成到一箇中。選擇一些東西在多個表的列中加入
我有一個類似於下面的多個表:
表: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' |
+---+---------+
如果您可以對錶進行旋轉(即:將列轉爲行),這樣會更容易。 AFAIK MySQL沒有這個功能。 – NullUserException
問題在於A表中ID#1後有數百行。 – abarrington
雖然我很好奇;爲什麼表格是這樣構成的?當這種問題出現時,它可能是壞DB設計的標誌。 – NullUserException