2014-09-25 4 views
0

Я имею запрос какКак получить DISINCT значения одного столбца из запроса присоединиться

SELECT DISTINCT table_1.id_1, 
    table_1.id_2, 
    table_1_id_3 
FROM table_1 
INNER JOIN table_2 
    ON table_1.id_1 = table_2.id_1 
     AND table_1.id_2 = table_2.id_2 
INNER JOIN table_3 
    ON table_2.id_1 = table_3.id_2 
     AND table_2.id_2 = table_3.id_2 
WHERE table_2.code = 'Y' 
    AND table_2.site = 'N' 
    AND table_3.code = 'Q' 

Это дает мне отличную комбинацию ID_1, ID_2 и id_3, удовлетворяющих условиям. Как должен быть запрос получать отдельные значения только id_1, соответствующие всем условиям.

Я не размещаю содержимое таблицы, так как у них большое количество столбцов, и этот вопрос является специфичным для запроса.

ответ

1

Вы можете удалить второе и третье поля из запроса.

SELECT DISTINCT 
    table_1.id_1  
FROM table_1 
INNER JOIN table_2 
    ON table_1.id_1 = table_2.id_1 
     AND table_1.id_2 = table_2.id_2 
INNER JOIN table_3 
    ON table_2.id_1 = table_3.id_2 
     AND table_2.id_2 = table_3.id_2 
WHERE table_2.code = 'Y' 
    AND table_2.site = 'N' 
    AND table_3.code = 'Q' 
+0

Когда я удаляю второе и третье поле, я получаю сообщение об ошибке «Код ошибки: 1136 Количество столбцов не совпадает с количеством значений в строке 1» –

+0

Я предполагаю, что это часть запроса INSERT затем ? Удалите столбцы 2 и 3 из вставки. Знайте, что значения будут NULL для столбцов 2 и 3, хотя. – JNevill

+0

Сохраните свой запрос в качестве внутреннего запроса и напишите select distict id_1 (.. ваш запрос ..); – Logan