Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как написать запрос с LEFT JOIN, внутри которого INNER JOIN? / 9 сообщений из 9, страница 1 из 1
25.12.2015, 12:48:10
    #39138016
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Есть 3 таблицы: a, b и c.
Нужно соединить их таким образом, чтобы вывести все записи таблицы А, и также b и с, при наличии записи в c, соединяющейся с b.
Если в C нет соответствующей записи для B, то на месте полей B и С оставить пустые значения.
Код: sql
1.
2.
3.
4.
SELECT * 
FROM a
LEFT JOIN b ON b.a_id = a.id
INNER JOIN c ON c.id = b.id


А в результате A тоже обрезает. Т.е. выводятся только скажем 13 записей вместо 322.
Должно быть:
a.id b.id c.id
1 2 2
2 null null
3 4 4
4 null null
5 null null
6 22 22
7 null null
8 null null
...

А выводится:
a.id b.id c.id
1 2 2
3 4 4
4 11 11
...
...
Рейтинг: 0 / 0
25.12.2015, 12:51:12
    #39138019
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Если же везде поставить LEFT JOIN, то будут выводиться записи таблицы b, для которых нет соответствия в c, а это не нужно.
a.id b.id c.id
1 2 2
2 3 null
3 4 4
4 5 null
5 11 null
6 22 22
7 23 null
8 28 null
...
Рейтинг: 0 / 0
25.12.2015, 12:57:53
    #39138032
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Скобки спасут отца русской демократии:
Код: sql
1.
2.
3.
4.
5.
SELECT * 
FROM a
LEFT JOIN 
(b INNER JOIN c ON c.id = b.id) 
ON b.a_id = a.id
...
Рейтинг: 0 / 0
25.12.2015, 13:02:22
    #39138043
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Или так:
SELECT *
Код: sql
1.
2.
3.
FROM a
LEFT JOIN (b, c) 
ON b.a_id = a.id AND c.id = b.id;
...
Рейтинг: 0 / 0
25.12.2015, 13:03:08
    #39138047
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Упс...
Код: sql
1.
2.
3.
4.
SELECT * 
FROM a
LEFT JOIN (b, c) 
ON b.a_id = a.id AND c.id = b.id;
...
Рейтинг: 0 / 0
25.12.2015, 14:44:18
    #39138211
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
Akina, спасибо!
...
Рейтинг: 0 / 0
25.12.2015, 18:49:55
    #39138421
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
svnvlad,
использовать скобки (круглые)
...
Рейтинг: 0 / 0
26.12.2015, 01:12:18
    #39138517
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
AkinaСкобки спасут отца русской демократии:
Код: sql
1.
2.
3.
4.
5.
SELECT * 
FROM a
LEFT JOIN 
(b INNER JOIN c ON c.id = b.id) 
ON b.a_id = a.id

*
*
ne polychitsia ispol'zovat' ideksy*
*
Pri nekotorix ysloviiax dva LEFT JOIN*
budey bistree
...
Рейтинг: 0 / 0
26.12.2015, 09:02:32
    #39138548
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать запрос с LEFT JOIN, внутри которого INNER JOIN?
javajdbc , это так. Но вопрос пока что теоретический, так что производительность имхо не рассматривается...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как написать запрос с LEFT JOIN, внутри которого INNER JOIN? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]