2013-09-12 4 views
0

Я хочу получить результаты от ids, которые я уже знаю. Это моя попытка (псевдо):Выберите Where In Join

SELECT * 
FROM main 
LEFT JOIN child 
WHERE main.id IN("1,2,3,4") 
ON main.id = child.main_id 

Как получить Чайлдс из основных известных идентификаторов из WHERE IN?

ТНХ помощь

+3

Это должно быть 'LEFT JOIN child ON main.id = child.main_id WHERE main.id IN (1,2,3,4)' –

+0

И обратите внимание, что это '(1,2,3,4)' и NOT '(" 1,2,3,4 ")' – MatBailie

ответ

1

Пожалуйста, попробуйте это, я думаю, что у вас есть неправильный синтаксис для того, что вам нужно.

SELECT * FROM main LEFT JOIN child ON main.id = child.main_id WHERE main.id IN(1,2,3,4)

ON должен быть сразу после JOIN из таблицы и в IN состояния не имеет " обертки вокруг него.

+0

Thx для этого! N1 – bergman

0

Я думаю, что вы пытаетесь получить может быть достигнуто с помощью 2-х вариантов:

1.

SELECT * FROM main LEFT JOIN child ON main.id = child.main_id WHERE main.id IN(1,2,3,4); 

удалить цитаты.

или

2.

SELECT * FROM main JOIN child ON main.id = child.main_id AND main.id IN(1,2,3,4); 
+1

Эти запросы дают разные результаты. – raina77ow

0

Первая проблема заключается в том, что вы помещаете строку в IN clausule, вместо списка элементов.

Вторая проблема заключается в том, что клаузула ON должна быть сразу после оговорки JOIN, я думаю. Вы можете попробовать это двумя различными способами (я думаю, что вы своего рода смешивая их!):

SELECT * FROM main m, child c 
    WHERE m.id IN(1,2,3,4) AND c.main_id = m.id 

ИЛИ

SELECT * FROM main m LEFT JOIN child c ON m.id = c.main_id 
    WHERE main.id IN(1,2,3,4) 

Я надеюсь, что это помогает.