2015-03-27 4 views
0

Я пытался получить некоторые данные из базы данных, используя MySQL JOIN, но без успеха до сих порMySQL SELECT, JOIN

У меня есть TABLE_A (представляющий строки заказа):

id idc cPos 
1 1 10 
2 1 20 
3 1 30 
4 1 40 
5 1 50 
6 2 10 
7 2 20 
8 2 30 
9 2 40 
10 3 10 
11 3 20 
12 3 30 
13 3 40 
14 3 50 

И TABLE_B:

delivery_id idc cPos 
1   1 10 
1   1 50 
2   1 20 
2   3 40 
2   3 50 

Я хотел бы запрос с результатами ниже:

id idc cPos delivery_id 
1 1 10  1 
3 1 30  NULL 
4 1 40  NULL 
5 1 50  1 
6 2 10  NULL 
7 2 20  NULL 
8 2 30  NULL 
9 2 40  NULL 
10 3 10  NULL 
11 3 20  NULL 
12 3 30  NULL 

мне нужно все записи из TABLE_B где delivery_id равно 1 и все записи из TABLE_A, которые не имеют корреспондентский в TABLE_B (по корреспондентскому Я понимаю table_a.idc = table_b.idc И table_a.cPos = table_b.cPos)

запрос, используемый мной:

SELECT table_a.*, table_b.delivery_id FROM table_a 
LEFT JOIN table_b ON (table_a.idc = table_b.idc AND table_a.cPos = table_b.cPos) 
WHERE (delivery_id IS NULL OR delivery_id = 1) 

Может кто-нибудь мне помочь?

+1

пожалуйста добавить, что вы пытались – Xitas

+0

я обновил вопрос с запросом – rosuandreimihai

+1

http://sqlfiddle.com/#!9/24642/2/0 - ** ваш ** запрос, указанный выше, дает ** ваши ** необходимые результаты ... так в чем вопрос здесь? – Sorin

ответ

0

Вы должны создать LEFT JOIN 2 условия:

SELECT tab_a.*,tab_b.delivery_id 
FROM table_a tab_a 
LEFT JOIN table_b tab_b ON tab_a.idc=tab_b.idc, tab_a.cPos=tab_b.cPos 
+0

результат не будет таким же, как ожидаемый мной результат. – rosuandreimihai

+0

@rosuandreimihai у вас нет заглавного ключа в table_b? – walkingRed

+0

в реальных таблицах есть примарные клавиши – rosuandreimihai

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