データベースからいくつかの結果を取得するために使用しているかなり複雑なクエリがあります (DB 設計はかなり汚れています)。
基本的に、2つの基準で注文しようとしている最終結果:
t.property
l.unit_number
基本的には、すべての liket.property
をグループ化し、l.unit_number
既存のものに基づいて並べ替えたいと考えています。
これが私のクエリです:
SELECT t.name_first,
t.name_middle,
t.name_last,
t.tenant_id,
t.property,
l.unit_number
FROM tenants t
INNER JOIN (
SELECT tenant_id, property, unit_number,
max(lease_start_date) AS newest_start_date
FROM leases
GROUP BY property, unit_number
) x
ON t.tenant_id = x.tenant_id
INNER JOIN leases l
ON l.lease_start_date = x.newest_start_date
AND l.tenant_id = t.tenant_id
WHERE t.name_first != 'Pending'
AND l.termination_date IS NULL
ORDER BY l.unit_number REGEXP '^[A-Za-z]+$'
,CAST(l.unit_number as SIGNED INTEGER)
,CAST(REPLACE(l.unit_number,'-','')AS SIGNED INTEGER)
,l.unit_number
,t.property
l.unit_number
現在、私のデータは基準に基づいて適切にソートされていますが、 t.property
、つまり:
t.property l.unit_number
4321 Test 1
1234 Test 2
5555 Test 3
4321 Test 4
1234 Test 7320-1
4321 Test 7320-2
5555 Test 7320-3
5555 Test 7320-4
1234 Test A
4321 Test B
4321 Test C
5555 Test D
t.property
理想的には、出力を でグループ化し、次に でソートしたいと思いl.unit_number
ます。すなわち:
t.property l.unit_number
1234 Test 2
1234 Test 7320-1
1234 Test A
4321 Test 1
4321 Test 4
4321 Test 7320-2
4321 Test B
5555 Test 3
5555 Test 7320-3
5555 Test 7320-4
5555 Test D