Je veux faire fusionner 2 tables, puis faire ORDER BY
, d'abord les commander par colonne top
, de sorte que les produits avec la valeur 1 dans top
s'affichent d'abord dans le jeu d'enregistrements. Par la suite, je veux les commander par colonne premium
, de sorte que les produits avec la valeur 1 vont juste après les produits top
.Ordre par plusieurs colonnes à partir de 2 tables
Après cela, je veux le reste des produits à commander par pub_date
de la table items
et des produits à valeur 1 dans la colonne highlighted
ne doit pas être montré directement ci-dessous top
et premium
articles.
Depuis tableaux originaux sont pleins d'informations inutiles, voici les versions dépouillées vers le bas:
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: Voici le pseudo (ou autre) de ce que je veux accomplir:
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
...
Une version rayée de la façon dont le jeu d'enregistrements devrait ressembler, se concentre sur highlighted
colonne:
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 |
+-------+-------------+
Donc, vous voulez fusionner les tables 'items' et' paid_items'? – KaeL
Yup. C'est en fait la version réduite de 2 grandes tables, donc vous n'avez pas de mur de texte dans la question SO. Ce dont j'ai besoin, c'est de tout commander par 'top',' premium' et 'pub_date', mais ne pas prendre' highlight' en considération - c'est juste une information que j'utilise plus tard pour l'impression du produit. Il va donc retourner un ensemble d'enregistrements contenant les produits 'top' et' premium', les ordonner par ces 2 colonnes, et ensuite retourner les autres produits commandés par 'pub_date', peu importe s'il est en surbrillance ou non. – jOpacic