2013-02-13 3 views
0

У меня есть 2 таблицы:JOIN 2 таблиц без записей репликации

1:

id | name 
1 | test 
2 | test1 

2.

id | related_id | additional 
1 | 1   | 1   
2 | 1   | 2 

идентификатор в 1 таблице сведения относятся с related_id в 2

Как к JOIN 1 таблице с 2 без записей репликации, поэтому результат будет только 1 строка из второй таблицы (related_id и дополнительная может b е любой)

id | name | related_id | additional 
1 | test | 1   | 1 
2 | test1| NULL  | NULL 

Update ЕСЛИ Я стараюсь группе после ВНУТРЕННИЙ/LEFT JOIN, результат

id | name | related_id | additional 
1 | test | 1   | 1 

ответ

1

Вы можете сгруппировать результат с первичным ключом

select * 
from table1 left join table2 
on table1.id = table2.related_id 
group by table1.id 
+0

Я немного изменил свой вопрос. группа не покажет 2 строки – freento

+0

И с ЛЕВЫМ ПРИСОЕДИНЕНИЕМ? –

+0

То же самое - 1 запись – freento

0

Вы можете использовать соединение

SELECT 
    * 
FROM table1 as t1 
LEFT JOIN (
     SELECT 
      MAX(id), 
      related_id 
     FROM table2 
    ) as t2 
ON t1.id = t2.related_id 
+0

Опасайтесь подзапроса с максимальным (id), related_id, потому что он не получает правильного результата, если у вас более одной строки с тем же (id), значение related_id не будет соответствовать выделенному id; вам нужно сделать еще один дополнительный подзапрос по максимальному (id), полученному в одиночку –

+0

да, я знаю, что я только хотел вернуть одну строку против каждой строки –

Смежные вопросы