У меня есть стол А.
|----+----|
| P | S |
|----+----|
| p1 | 1 |
| p2 | 7 |
| p3 | 14 |
| p4 | 23 |
| p5 | 1 |
|----+----|
и таблица B
|----+----|
| S | C |
|----+----|
| 1 | 21 |
| 5 | 21 |
| 23 | 21 |
| 1 | 30 |
| 7 | 90 |
|----+----|
Мне нужно отсортировать таблицу A.
Порядок сортировки:
A. TableA.S exists where (TableA.S = TableB.S) and TableB.C = 21
B. TableA.P
Окончательный вывод:
|----+----|
| P | S |
|----+----|
| p1 | 1 |
| p4 | 23 |
| p5 | 1 |
| p2 | 7 |
| p3 | 14 |
|----+----|
Это необходимо преобразовать в запрос DBIx :: Class.
Я попробовал следующее:
Select tableA.P, tableA.S
from tableA left join tableB on tableA.S = tableB.S
where (tableB.C = 21 or tableB.C is NULL)
order by tableB.C, tableA.P
Но мне не хватает где-то результата, где tableB.S = 7.
Спасибо.