У меня есть две таблицы.
работы:
MySQL - Как получить этот результат?
+----+----------+
| id | position |
+----+----------+
| 1 | 1 |
| 2 | 2 |
+----+----------+
содержание:
+----+---------+------+-------------+
| id | work_id | name | translation |
+----+---------+------+-------------+
| 1 | 1 | Kot | 1 |
| 2 | 1 | Cat | 2 |
| 3 | 2 | Ptak | 1 |
| 4 | 2 | Bird | 2 |
| 5 | 2 | Ssss | 3 |
+----+---------+------+-------------+
Я хочу, чтобы получить результат, как это:
+----+------+----------+
| id | name | sortName |
+----+------+----------+
| 1 | Kot | NULL |
| 1 | Cat | NULL |
| 2 | Ptak | Ssss |
| 2 | Bird | Ssss |
+----+------+----------+
Мой не работает запрос здесь:
select
w.id,
c.name,
cSort.name as sortName
from
work w
LEFT JOIN
content c
ON
(w.id=c.work_id)
LEFT JOIN
content cSort
ON
(w.id=cSort.work_id)
WHERE
c.translation IN(1,2) AND
cSort.translation=3
ORDER BY
sortName
Я хочу получить для каждой работы хотя бы один перевод и закреплять, если существует (перевод = 1 всегда существует). И для каждой строки я хочу специальный столбец с переводом, который используется для сортировки. Но не всегда этот перевод существует для работы. В этом примере я хочу сортировать работу путем перевода = 3.
Извините за мой беглый английский. Есть идеи?
С наилучшими пожеланиями
Что касается «Мой не работает запрос»: вы всегда должны сказать нам, что * * не работает. Например: «Запрос показывает другие типы сортировки, чем ожидалось, и не сортирует результаты по work.position». (Объяснение также поможет вам снова рассмотреть вопросы, и вы, вероятно, заметите, почему результаты не упорядочены по work.position.) –
это абсурдная модель данных –