
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.06.2010, 22:31
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
Есть три таблицы Tab1, Tab2, Tab3 Tab2 и Tab3 являются дочерними к Tab1, соответственно, в каждой есть внешний ключ id_tab1 Необходимо в одном запросе получить объединение этих трех таблиц. Тут что-то не соображу с join, перепробовал разные варианты inner/outer у меня получается следующая картина tab2.row1 tab3.row1 tab2.row1 tab3.row2 tab2.row2 tab3.row1 tab2.row2 tab3.row2 Т.е. каждая строка в первой дочерней таблице объединяется с каждой строкой во второй таблице А надо получить чтобы каждая строка в Tab2 объединилась только с одной строкой в Tab2 т.е. tab2.row1 tab3.row1 tab2.row2 tab3.row2 Если в Tab3 меньше строк, чем Tab2, то отсутствующие строки заполняются null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.06.2010, 22:53
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
Показывай скрипт создающий эти три таблицы и наполняющий их тестовыми данными. Показывай желаемый результат на основе тестовых данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 08:26
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlex Т.е. каждая строка в первой дочерней таблице объединяется с каждой строкой во второй таблице А надо получить чтобы каждая строка в Tab2 объединилась только с одной строкой в Tab2 В Tab3 хотел сказать. Покажи запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 09:41
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlex wrote: > Есть три таблицы Tab1, Tab2, Tab3 > Tab2 и Tab3 являются дочерними к Tab1, соответственно, в каждой есть > внешний ключ > id_tab1 > Необходимо в одном запросе получить объединение этих трех таблиц. Нет ничего проще. select * from Tab1 t1 join Tab2 t2 on t2.id_tab1 = t1.id_tab1 join Tab3 t3 on t3.id_tab1 = t1.id_tab1 Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 09:43
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
MasterZiv wrote: Ну и видимо select * from Tab1 t1 join Tab2 t2 on t2.id_tab1 = t1.id_tab1 дуае join Tab3 t3 on t3.id_tab1 = t1.id_tab1 and t3.row1 = t2.row1 Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 12:53
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
Я так уже пробовал. Получается объединение каждой записи с каждой. А мне надо - первая с первой, вторая со второй, третья с третьей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 12:54
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
Второй вариант также не годится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 13:57
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlexЯ так уже пробовал. Получается объединение каждой записи с каждой. А мне надо - первая с первой, вторая со второй, третья с третьей. Проверь ID_REMONT_WORK в какой то таблице имеет дубль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2010, 18:23
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlexВторой вариант также не годится Я вообще-то не такой запрос писал. Прочитай внимательно. Также было бы неплохо тебе определиться, что такое "первая запись" и "вторая запись". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:26
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
Топикстартер в вашем случае Distinct вам в руки... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:27
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
А вообще есть ощущение, что в ваших таблицах должна быть связь не 1-2/1-3 а 1-2-3... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:44
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
Distinct здесь не работает. tab1-tab2-tab3 в общем случае не должно быть, т.к. работы могут быть не связаны с з/ч ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:51
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
MasterZivJetAlexВторой вариант также не годится Я вообще-то не такой запрос писал. Прочитай внимательно. Также было бы неплохо тебе определиться, что такое "первая запись" и "вторая запись". в Вашем запросе and t3.row1 = t2.row1 в этой случае не должно быть, т.к. в в t2 и t3 кроме внешнего ключа id_t1 больше нет совпадений. А объединение только по внешнему ключу дает в результате запроса m x n строк, где m - кол-во строк в t2, n - кол-во строк в t3 Надо получить в результате m строк, где t2.row1 || t3.row1 t2.row2 || t3.row2 t3.row3 || t3.row3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 15:53
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
JetAlexMasterZivJetAlexВторой вариант также не годится Я вообще-то не такой запрос писал. Прочитай внимательно. Также было бы неплохо тебе определиться, что такое "первая запись" и "вторая запись". в Вашем запросе and t3.row1 = t2.row1 в этой случае не должно быть, т.к. в в t2 и t3 кроме внешнего ключа id_t1 больше нет совпадений. А объединение только по внешнему ключу дает в результате запроса m x n строк, где m - кол-во строк в t2, n - кол-во строк в t3 Надо получить в результате m строк, где t2.row1 || t3.row1 t2.row2 || t3.row2 t3.row3 || t3.row3 Поправка. Надо получить в результате m строк, где t2.row1 || t3.row1 t2.row2 || t3.row2 t2.row3 || t3.row3[/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 17:14
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlex, если я правильно понимаю, то должно получиться: Name Detail Name RabotaАвтовоск силиконовый Замена головки блока цилиндраАвтопластилин Замена переднего сальника при этом у всех четырех элементов у вас стоит одинаковый ID_REMONT_WORK. Теперь вопрос - почему должна была получиться именно такая таблица, а не такая к примеру: Name Detail Name RabotaАвтовоск силиконовый Замена переднего сальникаАвтопластилин Замена головки блока цилиндра Есть какой-то признак явного соотнесения записей? Может быть дата ввода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 17:18
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlex wrote: > в Вашем запросе and t3.row1 = t2.row1 в этой случае не должно быть, Родной мой, предполагалось, что ты туда допишешь нужное выражение JOIN-а. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 17:39
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
Mikle83JetAlex, если я правильно понимаю, то должно получиться: Name Detail Name RabotaАвтовоск силиконовый Замена головки блока цилиндраАвтопластилин Замена переднего сальника при этом у всех четырех элементов у вас стоит одинаковый ID_REMONT_WORK. Теперь вопрос - почему должна была получиться именно такая таблица, а не такая к примеру: Name Detail Name RabotaАвтовоск силиконовый Замена переднего сальникаАвтопластилин Замена головки блока цилиндра Есть какой-то признак явного соотнесения записей? Может быть дата ввода? Примеры указаны верно. Порядок объединения записей нужен в порядке их ввода таблицу. Т.е. первая введенная в tab2 должна объединится с первой введенной в Tab3 вторая введенная в Tab2 должна объединится со второй введенной в tab3 никаких других признаков, в том числе и даты, нет. Если бы была дата, я бы уже сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 17:41
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
MasterZiv JetAlex wrote: > в Вашем запросе and t3.row1 = t2.row1 в этой случае не должно быть, Родной мой, предполагалось, что ты туда допишешь нужное выражение JOIN-а. Если бы, я знал, как их объединить, я бы сделал, и вопросов здесь бы не задавал. В любом случае, спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 17:47
|
|||
|---|---|---|---|
Запутался с JOIN |
|||
|
#18+
JetAlexПорядок объединения записей нужен в порядке их ввода таблицу.Нет такой буквы в SQL. Добавь в базу поле которое будет указывать порядок добавления записей в таблицу. Это может быть и дата, и абстрактная нумерация. Но пока ты твои записи не будут однозначно отсортированы, начальная задача не будет иметь решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2010, 18:03
|
|||
|---|---|---|---|
|
|||
Запутался с JOIN |
|||
|
#18+
White OwlJetAlexПорядок объединения записей нужен в порядке их ввода таблицу.Нет такой буквы в SQL. Добавь в базу поле которое будет указывать порядок добавления записей в таблицу. Это может быть и дата, и абстрактная нумерация. Но пока ты твои записи не будут однозначно отсортированы, начальная задача не будет иметь решения. ОК. Естественно, в Tab2 есть ключ Id_tab2, тип autoincrement Соответственно, в tab3 ключ id_tab3, тип autoincrement Это и имелось ввиду, когда я писал, что в "порядке ввода" А как это может помочь? Я пробовал, через Max, min, top. - для двух записей, есть варианты, а вот когда больше... Через цикл не очень хочется ваять. может, думал на селектах получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=55&mobile=1&tid=2010626]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 172ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...