|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Здравствуйте. Сразу скажу, что пример, просто подобранный попроще, чтобы не мудрить голову своими полями. Имеется: Таблица A TAB FAM1000 Иванов2000 Петров3000 Сидоров Таблица B TAB DOLJ1000 инженер3000 механик Таблица С TAB OTDEL2000 отдел 23000 отдел 3 Надо выбрать ВСЕ строки с первой таблицы и по полю TAB выбрать данные DOLJ и OTDEL и добавить данные соответственно. Во 2-й и 3-й таблицах можно не найти поля TAB с первой таблицы. То есть надо: TAB FAM Dolj Otdel1000 Иванов инженер нет в таблице32000 Петров нет в таблице2 отдел 23000 Сидоров механик отдел 3 select a.tab, a.fam, b.dolj, c.otdel from a left join b on a.tab=b.tab join c on a.tab=c.tab или select a.tab, a.fam, b.dolj, c.otdel from a left join b on a.tab=b.tab left join c on a.tab=c.tab но это все не то. Если бы не было нужно выводить ВСЕ строки с первой таблицы, но проблемы бы не было. А так без LEFT JOIN не включаются записи, инфы по TAB которых нет во 2-й или 3-й таблице, а они нужны, пусть даже с пустыми ячейками. Как такое реализовать? Тут были примеры, но все не такие. Создавать временную таблицу в базе для промежуточного результата(сначала две таблицы соединить во временную, потом так же временную и третью) запрещено. Вот так бы меня устроило, select a.tab, a.fam, b.dolj from a left join b on a.tab=b.tab into d select d.tab, d.fam, d.dolj, c.otdel from d left join c on d.tab=c.tab но реализовать надо в одном запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:03 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Max4А так без LEFT JOIN не включаются записи, инфы по TAB которых нет во 2-й или 3-й таблице, а они нужны, пусть даже с пустыми ячейками.FULL OUTER JOIN ? правда в доках его рисуют на 2 таблицы, а тут 3 - с трудом представляю, что получится в итоге. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:10 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
ваш второй запрос должен полностью выдать тот вид, чтовы указали в качестве результирующего выражения. Чем не устраивает? Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:15 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Max4, ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:23 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Garfish, ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:23 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Garfish, что то я не туда жму ) вот смотри там есть хранимая процедура ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:24 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
GarfishGarfish, что то я не туда жму ) вот смотри там есть хранимая процедура К сообщению приложен файл (ABC.rar - 38Kb) cкачать А слабо текст ХП запринтскринить, сунуть картинку в MS Word, документ MS Word вставить как OLE - объект в ячейку MS Excel, а документ MS Excel - заархивировать и выложить здесь? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:30 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
чччД, ну ты и написал, блондинко ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:39 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
arni, нет, в последнем столбце не то выводит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:43 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Garfishвот смотри там есть хранимая процедура буду смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:46 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
пока не могу глянуть, у меня InterBase (пишу на Дельфи) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:56 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Max4, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:58 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Max4arni, нет, в последнем столбце не то выводит. Не фантазируйте. Это легко верифицируется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
ваш запрос выдает то, что вы нарисовали Код: plaintext 1. 2. 3.
в крайнем случае, если вы стремитесь к заполнению null текстом "нет в таблице Х", то вот Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 21:59 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Не помешало бы узнать версию БД. В старых интербейзах довольно легко поймать баг на хитрых джоинах. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2011, 09:19 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Arni , Спасибо, очень помог!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2012, 17:08 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
arni, Здравствуйте. Объясните пожалуйста, новичку, что он делает не правильно? На известном сайте решаю задачки. Вот хочу объединить 3 таблицы: select distinct A.maker, A1.model,B.speed AS PC_speed, C.speed as LP_speed from Product A, Product A1 left join PC B on A1.model=B.model join Laptop C on A1.model=C.model Результат на картинке ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2016, 10:41 |
|
Соединение 3-х таблиц: Join или иначе
|
|||
---|---|---|---|
#18+
Max4, Код: plsql 1. 2. 3. 4.
но это все не то.Почему? В случае отсутствия записи надо выводить что-то типа 'нет в таблице'? но реализовать надо в одном запросе.Может быть так (если я правильно понял суть вопроса)? Код: plsql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2016, 11:38 |
|
|
start [/forum/topic.php?fid=40&msg=37098798&tid=1562161]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 157ms |
0 / 0 |