Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Четырёхтабличный запрос и более. (Проблемка). / 22 сообщений из 22, страница 1 из 1
16.02.2014, 09:39:46
    #38562141
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
У меня есть 4 таблицы, связаны они ключом ID.
Вот запрос к таблицам:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT t1 . * , t2 . * , t3 . * , t4 . * 
FROM t1, t2, t3, t4
WHERE t1.ID = t2.ID
AND t1.ID = t3.ID
AND t1.ID = t4.ID
AND t1.Name =  'Test'



И если одна из таблиц окажется пуста, то общий результат будет NULL (0).
Что по советуете?
...
Рейтинг: 0 / 0
16.02.2014, 09:43:37
    #38562143
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
Ну пуста, ну и что?
Кстати, результат будет не "NULL (0)", а пустой набор.

Чтобы что-то посоветовать, нужно понимать логику этого запроса с точки зрения предметной области.
...
Рейтинг: 0 / 0
16.02.2014, 10:03:19
    #38562146
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
Дак мне то надо что:
Чтобы он из 4 таблиц выводил данные, даже если в одной из четырех таблиц пусто. А он вообще ничего не выводит, если в одной пусто, нет нужного ID.
...
Рейтинг: 0 / 0
16.02.2014, 10:04:30
    #38562147
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
left join ?
...
Рейтинг: 0 / 0
16.02.2014, 10:07:03
    #38562148
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
не буду утверждать, не смотрел план. но имхо такие запросы
Код: sql
1.
2.
3.
SELECT t1 . * , t2 . * , t3 . * , t4 . * 
FROM t1, t2, t3, t4
...

это пожирание ресурсов сервера. зачем вам произведение?
...
Рейтинг: 0 / 0
16.02.2014, 10:31:01
    #38562153
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
ILLHEADне буду утверждать, не смотрел план. но имхо такие запросы
Код: sql
1.
2.
3.
SELECT t1 . * , t2 . * , t3 . * , t4 . * 
FROM t1, t2, t3, t4
...

это пожирание ресурсов сервера. зачем вам произведение?

Какое произведение? Это выборка всего из таблицы.
...
Рейтинг: 0 / 0
16.02.2014, 10:31:28
    #38562154
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
ILLHEADleft join ?
Приведите пример.
...
Рейтинг: 0 / 0
16.02.2014, 10:46:07
    #38562159
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
UrukhayyКакое произведение?декартово вестимо )

UrukhayyILLHEADleft join ?Приведите пример.манула или гугла нет?
...
Рейтинг: 0 / 0
16.02.2014, 10:48:23
    #38562160
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
ILLHEADUrukhayyКакое произведение?декартово вестимо )Нет там декартова произведения, не выдумывайте. Обратите внимание на секцию WHERE.
...
Рейтинг: 0 / 0
16.02.2014, 10:50:43
    #38562161
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
UrukhayyILLHEADleft join ?
Приведите пример.Например так:
Код: sql
1.
2.
3.
SELECT t1 . * , t2 . *
FROM t1 LEFT JOIN t2 ON t1.ID = t2.ID
WHERE t1.Name =  'Test'

Но LEFT JOIN чувствителен к порядку указания таблиц, а его можно определить только исходя из логики таблиц, о коей мы ничего не знаем.
...
Рейтинг: 0 / 0
16.02.2014, 10:54:45
    #38562162
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
UrukhayyПриведите пример.
Неуч, да еще и ленивый, иди читай буквари.
Букварь по JOIN
...
Рейтинг: 0 / 0
16.02.2014, 11:27:11
    #38562174
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
miksoftUrukhayyпропущено...

Приведите пример.Например так:
Код: sql
1.
2.
3.
SELECT t1 . * , t2 . *
FROM t1 LEFT JOIN t2 ON t1.ID = t2.ID
WHERE t1.Name =  'Test'

Но LEFT JOIN чувствителен к порядку указания таблиц, а его можно определить только исходя из логики таблиц, о коей мы ничего не знаем.

Уже теплее. Сделала подобным образом запрос 4х таблиц, в которых внешний ключ ID. Из первой выводит всё нормально, в остальных таблицах все поля выводятся как NULL.
...
Рейтинг: 0 / 0
16.02.2014, 11:31:12
    #38562175
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
UrukhayyИз первой выводит всё нормально, в остальных таблицах все поля выводятся как NULL.Если это не то, что нужно получить, то показывайте запрос.
...
Рейтинг: 0 / 0
16.02.2014, 11:40:13
    #38562179
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
Код: plsql
1.
2.
SELECT table1 . * , table2 . * , table3 . * ,table4 . *
FROM table1 LEFT JOIN (table2,table3,table4) ON (table1.ID = table2.ID AND table1.ID = table3.ID AND table1.ID = table4.ID) WHERE table1.Name =  'Test'
...
Рейтинг: 0 / 0
16.02.2014, 11:59:14
    #38562183
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
Urukhayy,

вы определенно неравнодушны к произведениям )
внутри (table2,table3,table4) реализуется CROSS JOIN перечисленных таблиц
...
Рейтинг: 0 / 0
16.02.2014, 12:00:44
    #38562184
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
ILLHEADUrukhayy,

вы определенно неравнодушны к произведениям )
внутри (table2,table3,table4) реализуется CROSS JOIN перечисленных таблиц
Ну тогда предоставьте корректный запрос!
...
Рейтинг: 0 / 0
16.02.2014, 12:05:50
    #38562189
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
пробуйте так
Код: sql
1.
2.
3.
4.
5.
SELECT table1 . * , table2 . * , table3 . * ,table4 . *
FROM table1 LEFT JOIN table2 ON table1.ID = table2.ID
            LEFT JOIN table3 ON table1.ID = table3.ID
            LEFT JOIN table4 ON table1.ID = table4.ID
WHERE table1.Name =  'Test'
...
Рейтинг: 0 / 0
16.02.2014, 12:07:03
    #38562191
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
> предоставьте
вы случаем не начальником работаете? )
...
Рейтинг: 0 / 0
16.02.2014, 12:10:08
    #38562193
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
ILLHEADпробуйте так
Код: sql
1.
2.
3.
4.
5.
SELECT table1 . * , table2 . * , table3 . * ,table4 . *
FROM table1 LEFT JOIN table2 ON table1.ID = table2.ID
            LEFT JOIN table3 ON table1.ID = table3.ID
            LEFT JOIN table4 ON table1.ID = table4.ID
WHERE table1.Name =  'Test'



Опа! То что надо)
...
Рейтинг: 0 / 0
16.02.2014, 12:11:02
    #38562194
Urukhayy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
А можете объяснить, в чем был косяк?
...
Рейтинг: 0 / 0
16.02.2014, 12:15:07
    #38562196
ILLHEAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
UrukhayyА можете объяснить, в чем был косяк?вам не смогу
...
Рейтинг: 0 / 0
17.02.2014, 11:40:10
    #38562774
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четырёхтабличный запрос и более. (Проблемка).
Urukhayy,

в том что у вас был неявный ИННЕР ДЖОИН, а нужен был ЛЕФТ
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Четырёхтабличный запрос и более. (Проблемка). / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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