Я хочу сделать слияние двух таблиц, а затем сделать ORDER BY
, сначала заказать их по столбцу top
, чтобы продукты со значением 1 в top
отображались сначала в наборе записей.Сортировать по нескольким столбцам из 2 таблиц
После этого, я хочу заказать их по столбцу premium
, чтобы продукты со значением 1 пошли сразу после top
продукции.
После этого, я хочу остальные продукты по заказу pub_date
из таблицы items
, а продукты со значением 1 в колонке highlighted
не должны быть приведены непосредственно ниже top
и premium
пунктов.
Поскольку оригинальные столы наполнены ненужной информации, вот зачищенные вниз версии:
Table `items`:
+-------+------------+--------+
| pk_id | pub_date | author |
+-------+------------+--------+
| 1 | 2013-06-11 | John |
| 2 | 2013-06-12 | Mike |
| 3 | 2013-06-25 | Seth |
| 4 | 2013-06-11 | Drew |
| 5 | 2013-06-13 | Joe |
+-------+------------+--------+
Table `paid_items`:
+-------+-----+---------+-------------+--------+
| fk_id | top | premium | highlighted | active |
+-------+-----+---------+-------------+--------+
| 2 | 1 | 0 | 0 | 1 |
| 3 | 0 | 0 | 1 | 1 |
| 4 | 0 | 1 | 0 | 1 |
| 5 | 0 | 0 | 1 | 1 |
+-------+-----+---------+-------------+--------+
EDIT: Вот псевдо (или любой другой), что я хочу сделать:
PRODUCTS_LIST>
PRODUCTS WITH TOP VALUE
PRODUCTS WITH PREMIUM VALUE
PRODUCTS ORDERED BY PUB_DATE>
PRODUCT WITH NO HIGHLIGHTED VALUE
PRODUCT WITH NO HIGHLIGHTED VALUE
PRODUCT WITH HIGHLIGHTED VALUE
PRODUCT WITH NO HIGHLIGHTED VALUE
PRODUCT WITH HIGHLIGHTED VALUE
...
Разбитая версия, как должен выглядеть набор записей, фокусируется на highlighted
:
mysql> select pk_id, highlighted from items left join paid_items on items.pk_id
= paid_items.fk_id order by pub_date desc;
+-------+-------------+
| pk_id | highlighted |
+-------+-------------+
| 3 | 1 |
| 5 | 1 |
| 2 | 0 |
| 1 | NULL |
| 4 | 0 |
+-------+-------------+
Итак, вы хотите объединить таблицы 'items' и' paid_items'? – KaeL
Yup. Это фактически полосатая версия из двух больших таблиц, поэтому у вас нет стенограммы текста в вопросе SO. Мне нужно всего лишь заказать «top», «premium» и «pub_date», но не учитывать «подсвеченные» - это всего лишь часть информации, которую я использую позже для печати продукта. Таким образом, он вернет набор записей, содержащий продукты 'top' и' premium', закажите их этими двумя столбцами, а затем возвратите другие товары, заказанные 'pub_date', независимо от того, выделен ли он или нет. – jOpacic