2010-07-15 4 views
2

У меня есть две таблицы tbl_a и tbl_b и их поляSQL-соединение с двумя ключевыми словами «ON»?

tbl_a 
----- 
a_id a_name a_surname a_c_id a_d_id 

tbl_b 
----- 
b_id b_name b_phone b_c_id b_d_id 

Я хочу присоединиться эти две таблицы, как это:

select *from tbl_a join tbl_b on tbl_a.a_c_id=tbl_b.b_c_id AND tbl_a.a_d_id=tbl_b.b_d_id where tbl_a.id>15; 

Как вы можете видеть, я хочу использовать две клавиши ON ключевое слово ,Есть какой-либо способ сделать это? Спасибо за заранее ...

ответ

3

Ваш запрос прав нет необходимости устанавливать дополнительные по ключевому слову И ключевое слово сделать работу присоединиться на двух разных колонках. Просто поставьте скобу, чтобы понять правильно.

select *from tbl_a join tbl_b on 
(
    tbl_a.a_c_id=tbl_b.b_c_id 
    AND 
    tbl_a.a_d_id=tbl_b.b_d_id 
) 
where tbl_a.id>15; 
+0

Спасибо это работает! Я хочу спросить что-то еще, в tbl_a есть в основном около ста записей, но в tbl_b там сто тысяч записей, и это занимает почти 120 секунд, чтобы выполнить it.Is это нормально? Я использую выделенный сервер –

+0

приветствуется –

+0

Я решил, что была логическая ошибка, поэтому она приводит к низкой производительности. –

0

Sql сервер разрешает это. Я могу говорить для других реализаций.

1

Способ, которым вы его положили, должен работать нормально.

В MySQL вы можете установить несколько ограничений соединения, используя AND.

0

он отлично работает, но использовать псевдоним вместо длинного имя_таблицы

select * from tbl_a a 
     join tbl_b b on a.a_c_id=b.b_c_id AND a.a_d_id=b.b_d_id 
     where a.id>15;