2016-12-13 1 views
0

Я пытаюсь использовать имена левого соединения и concat 2 столбца, чтобы они отображались вместе в выпадающем списке. Это мой запрос.Пытается использовать ORDER BY на LEFT JOIN Query

SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID 
FROM Index 
LEFT JOIN Master 
ON Master.MR_ID=Index.MR_ID 

Я хочу заказать его по MR_ID в таблице индекса, но всякий раз, когда я пытаюсь добавить ORDER BY в запросе, он не будет работать для меня. Может ли кто-нибудь помочь мне здесь?

+1

мы могли .... если вы покажете, что 'раздел ORDER BY' вы пытаетесь использовать – Lamak

+0

в первую очередь у вас есть' Index.MR_Id' в нескольких местах SQL выше, но 'Index' не является таблицей, упомянутой в предложении From. Предполагается ли это 'SINdex'? Или это должно быть «Индекс» в предложении «От»? и это ваша проблема в вашем Заказе? –

ответ

2
WITH cte AS (
SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID 
FROM [Index] 
LEFT JOIN Master 
ON Master.MR_ID=Index.MR_ID 
) 
SELECT * 
FROM 
    cte 
ORDER BY 
    MR_ID; 

выше, если вы хотите заказать в последней колонке вы получили.

Если вы хотите заказать MR_ID в таблице Index или Master, это невозможно, потому что вы используете оператор DISTINCT, что означает, что он не определен окончательным запросом. В этом случае вам нужно будет ниже

WITH cte AS (
SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', Master.MR_Name) AS MR_ID 
    , Index.MR_ID AS sort_column 
FROM [Index] 
LEFT JOIN Master 
ON Master.MR_ID=Index.MR_ID 
) 
SELECT MR_ID 
FROM 
    cte 
ORDER BY 
    sort_column; 
+0

Это то, что они ищут! Спасибо! – Rataiczak24

1

Я думаю, что ваш после этого

SELECT DISTINCT CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) AS MR_ID 
FROM SIndex 
LEFT JOIN Master ON Master.MR_ID=SIndex.MR_ID 
Order by CONCAT(CAST(Index.MR_ID AS INT),' - ', IsNull(Master.MR_Name, '')) 
1

Mister Положительный бить меня к нему. Я также подготовился к ошибкам, так как вы используете левое соединение.

select distinct concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'') as mr_id 
    from sindex 
    left join master on master.mr_id=index.mr_id 
    order by concat(cast(index.mr_id as int),' - ', isnull(master.mr_name,'')