Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с LEFT JOIN возвращает в 2 раза больше значений / 10 сообщений из 10, страница 1 из 1
12.12.2013, 19:18:23
    #38499133
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Собственно, есть запрос, который должен возвратить все поля исходной таблицы + 2 поля "title" таблицы object_lng. С результатом одной записи нет никаких проблем (поля возвращаются нормально). Теоретически все верно, а вот на практике выходит массив, с дублированными записями. Такое ощущение, что проверки `lng_1`.`lang_id` = 1 и `lng_3`.`lang_id` = 3 не выполняются.

Запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            SELECT
                `obj`.`id`,
                `lng_1`.`title` AS `title_1`,
                `lng_3`.`title` AS `title_3`
            FROM
                `object` AS `obj`
            LEFT JOIN `object_lng` AS `lng_1` ON
                 `lng_1`.`record_id` = `obj`.`id` AND `lng_1`.`lang_id` = 1
            LEFT JOIN `object_lng` AS `lng_3` ON
                 `lng_3`.`record_id` = `obj`.`id` AND `lng_3`.`lang_id` = 3
            WHERE
                `obj`.`public` = 1 AND
                `obj`.`date` > '2013-09-08 23:44:38'
            ORDER BY
                `obj`.`date`



Пример результата:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Array (
    [id] => 4138
    [title_1] => Заголовок 1
    [title_3] => Title 1
)
Array (
    [id] => 4138
    [title_1] => Заголовок 2
    [title_3] => Title 2
Array (
    [id] => 4140
    [title_1] => Заголовок 10
    [title_3] => Title 10
)
Array (
    [id] => 4140
    [title_1] => Заголовок 20
    [title_3] => Title 20
)
...
Рейтинг: 0 / 0
12.12.2013, 19:24:36
    #38499136
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
И какой же из двух "дублей", по твоему разумению, не должен возвращаться? Я уж не говорю о том, что по моему разумению твой "вывод" неполон, и там не по 2, а по 4 (а то и больше) записи для каждого показанного `obj`.`id`
...
Рейтинг: 0 / 0
12.12.2013, 19:26:49
    #38499140
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Извиняюсь. Выводит такое

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Array (
    [id] => 4138
    [title_1] => Заголовок 1
    [title_3] => Title 1
)
Array (
    [id] => 4138
    [title_1] => Заголовок 1
    [title_3] => Title 1
Array (
    [id] => 4140
    [title_1] => Заголовок 10
    [title_3] => Title 10
)
Array (
    [id] => 4140
    [title_1] => Заголовок 10
    [title_3] => Title 10
)
...
Рейтинг: 0 / 0
12.12.2013, 19:28:28
    #38499141
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
автори там не по 2, а по 4 (а то и больше) записи для каждого показанного `obj`.`id`
только не по 4, а по количеству одинаковых record_id
...
Рейтинг: 0 / 0
12.12.2013, 19:31:54
    #38499147
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
ТЫ покажи, что ли, контент каждой из трёх таблиц для `object_lng`.`record_id` и `object`.`id`, скажем, равных 4138 - вот тогда и поговорим...
...
Рейтинг: 0 / 0
12.12.2013, 19:36:24
    #38499154
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
из каких ТРЁХ? две таблицы только в запросе учавствуют.

Таблица object_lng
record_id lang_id title
4129 1 Трейлер 1
4129 3 Трейлер 1
4130 1 Трейлер 1
4130 3 Трейлер 1
4131 1 Трейлер 1
4131 3 Трейлер 1

Таблица object
id
4131
4130
4129
...
Рейтинг: 0 / 0
12.12.2013, 19:37:37
    #38499156
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Таблица object_lng
record_id   lang_id   title
4129        1         Трейлер 1
4129        3         Трейлер 1
4130        1         Трейлер 1
4130        3         Трейлер 1
4131        1         Трейлер 1
4131        3         Трейлер 1

Таблица object
id
4131
4130
4129
...
Рейтинг: 0 / 0
12.12.2013, 19:46:32
    #38499165
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Индекс может как-то повлиять на результат

Код: plsql
1.
2.
3.
Keyname	         Type	 Cardinality	Field
record_lang	 UNIQUE	 7475 	        record_id
                                        lang_id
...
Рейтинг: 0 / 0
12.12.2013, 19:47:52
    #38499167
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Это вопрос был:)
...
Рейтинг: 0 / 0
12.12.2013, 20:08:37
    #38499187
Blanzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с LEFT JOIN возвращает в 2 раза больше значений
Вопрос снят. С запросом все в порядке.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с LEFT JOIN возвращает в 2 раза больше значений / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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