8

この MySQL テーブルを変換したい:

title1 | title2 |type  
-------+--------+----
qwe1   | qwe2   | 3  
asd1   | asd2   | 7

PHPでこのテーブルに

title | type  
------+-----
asd1  | 7  
asd2  | 7  
qwe1  | 3  
qwe1  | 3

しかし、最初の列で PHP テーブルを正しく並べ替える方法がわかりません。

(これは私が現在使用しているコードです)

$sql = "SELECT * FROM table ORDER BY title1, title2";   
$pager = new PS_Pagination( $dbh, $sql, 3, 4, null );//pagination class
$rs = $pager->paginate(); 

while ($row = $rs->fetch(PDO::FETCH_ASSOC)){
    echo "<tr>";
    echo "<td>{$row['title1']}</td>";
    echo "<td>{$row['type']}</td>";
    echo "</tr>";

    echo "<tr>";
    echo "<td>{$row['title2']}</td>";
    echo "<td>{$row['type']}</td>";
    echo "</tr>";
}       

echo "</table>";
4

6 に答える 6

9

SQL 自体では、 を使用して実行できますUNION。そしてORDER BY、クエリ全体に使用してください!

SELECT `title1` AS `title`, `type`
FROM `table`
UNION
SELECT `title2` AS `title`, `type`
FROM `table`
ORDER BY `title` ASC

出力

+-------+------+
| TITLE | TYPE |
+-------+------+
|  asd1 |    7 |
|  asd2 |    7 |
|  qwe1 |    3 |
|  qwe2 |    3 |
+-------+------+

フィドル: http://sqlfiddle.com/#!2/ff9cf/1

于 2013-02-08T07:59:31.780 に答える
5

試す:

SELECT 'title1' AS 'title', 'type' from 'table'
UNION
SELECT 'title2' AS 'title', 'type' from 'table'
ORDER BY 'title'

うまくいけば、構文が正しくなりました。

基本的に、2 つのクエリを実行して結果をマージする必要があります。これが UNION の機能です。

EDIT(UNIONとUNION ALLの違いについては、他の回答を参照してください)。

于 2013-02-08T08:01:45.170 に答える
4

Unionを使用する前に、As を使用して列の名前を変更し、同じ構造を gt にします。

SELECT title1 as title, type
FROM YourTable
UNION ALL
SELECT title2 as title, type
FROM YourTable
于 2013-02-08T07:59:41.477 に答える
2

UNIONを使用する必要があると思います:

SELECT title1, type
FROM YourTable
UNION ALL
SELECT title2, type
FROM YourTable

重複したくない場合は、UNION ALL の代わりに UNION を使用して削除できます。

- 編集

提案されているように、これらの結果も並べ替える場合は、ORDER BY 句を追加して、列にエイリアスを付けます。

SELECT title1 title, type
FROM YourTable
UNION ALL
SELECT title2 title, type
FROM YourTable
ORDER BY title

幸運を。

于 2013-02-08T07:58:06.650 に答える
2

組合が必要です

すなわち

select * from (select title1 as title, type
from table
union
select title2 as title, type
from table) order by title
于 2013-02-08T08:00:04.237 に答える
0

質問の私の理解から、あなたはtitle1+title2を要約してから注文したいと思います。

なぜみんなが組合を使っているのかわからない

Select concat(title1,title2) title, type
from yourTable
order by title asc 

仕事をしますか

編集:iPhoneからコード形式のテキストを書くことはできません。ありがとうfthiella

于 2013-02-08T08:39:25.753 に答える