mysql> select * from facts;
+----+---------+------------+---------+
| id | fact_id | fact_value | host_id |
+----+---------+------------+---------+
| 1 | 1 | rh5 | 1 |
| 2 | 1 | rh4 | 2 |
| 3 | 2 | virtual | 1 |
| 4 | 2 | virtual | 2 |
| 5 | 3 | rack 2 | 1 |
+----+---------+------------+---------+
mysql> select * from hosts;
+---------+-----------+
| host_id | host_name |
+---------+-----------+
| 1 | bellagio |
| 2 | mirage |
+---------+-----------+
は、私が使用したクエリは次のようん:表示mysqlの結果
mysql> select host_name,fact_value from hosts as a left join facts as b on
> b.host_id=a.host_id and b.fact_id in (1,2,3);
+-----------+------------+
| host_name | fact_value |
+-----------+------------+
| bellagio | rh5 |
| bellagio | virtual |
| bellagio | rack 2 |
| mirage | rh4 |
| mirage | virtual |
+-----------+------------+
私は結果がホストごとに1行を印刷したい、それは別の行の各fact_valueを出力する方法に注目してください。私がIN
句を持っている理由は、このテーブルが各ホストに40以上のカラムを持つからです。私はほんの一握りしか望んでいない(私はこの例では3つを選ぶ)。
ここが私が探しているものです。
+-----------+--------+-----------+-----------+
| host_name | value1 | value 2 | value 3 |
+-----------+--------+-----------+-----------+
| bellagio | rh5 | virtual | rack 2 |
| mirage | rh4 | virtual | NULL |
+-----------+--------+-----------+-----------+
ああ、私はそれが何を参照して、実際に私の投稿を編集させてください。私の悪い、私は自分の列に値を欲しかったので、私はPHPで簡単にデータを解析することができます。 – luckytaxi
@luckytaxi:各ドメインの値が異なる場合はどうなりますか?とにかく、mysqlでは動的数値のために行うことは不可能です – zerkms
しかし、GROUP_CONCAT(CONCAT( '|'、fact_value))とphp、explode( '|'、$ data) – symcbean