Я хочу преобразовать эту таблицу 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>";
В самом 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 | +-------+------+
пытаться:
SELECT 'title1' AS 'title', 'type' from 'table' UNION SELECT 'title2' AS 'title', 'type' from 'table' ORDER BY 'title'
Надеюсь, я правильно понял синтаксис.
По сути, вы хотите сделать два запроса и объединить результат, что и делает UNION.
EDIT (см. Другой ответ на разницу между UNION и UNION ALL).
Использование Как переименовать столбцы в gt той же структуры, прежде чем использовать Union
SELECT title1 as title, type FROM YourTable UNION ALL SELECT title2 as title, type FROM YourTable
Вам нужен союз
т.е.
select * from (select title1 as title, type from table union select title2 as title, type from table) order by title
Я думаю, вам нужно использовать UNION:
SELECT title1, type FROM YourTable UNION ALL SELECT title2, type FROM YourTable
Если вы не хотите дублировать, вы можете удалить UNION вместо UNION ALL.
–РЕДАКТИРОВАТЬ
Как было предложено, если ваши намерения были ЗАКАЗАТЬ эти результаты, просто добавьте предложение ORDER BY и добавьте псевдоним в свою колонку:
SELECT title1 title, type FROM YourTable UNION ALL SELECT title2 title, type FROM YourTable ORDER BY title
Удачи.
Из моего понимания вопроса, который вы хотите конкретизировать title1 + title2, а затем закажите.
Я не понимаю, почему все используют союзы
Select concat(title1,title2) title, type from yourTable order by title asc
Сделал бы работу
Редактировать: can not писать код форматированный текст из iphone. Благодарю fthiella