我想合并2个表,然后执行ORDER BY
,首先按top
列对它们进行排序,以便top
中值为1的产品在记录集中首先显示。从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 |
+-------+-----+---------+-------------+--------+
编辑: 这里是什么,我想要完成的伪(或其他):
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
是的。这实际上是2个大表格的条纹版本,所以你在SO问题中没有文字墙。我需要的是用'top','premium'和'pub_date'排序,但不要考虑'突出显示' - 这只是我稍后用于产品打印的信息。 所以它会返回一个包含'top'和'premium'产品的记录集,按这两列排序,然后返回'pub_date'排序的其他产品,无论它是否被高亮显示。 – jOpacic