powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку данных с использованием JOIN.
9 сообщений из 9, страница 1 из 1
Запрос на выборку данных с использованием JOIN.
    #38869943
anddm2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые знатоки sql запросов!

Помогите с выборкой из двух таблиц. Уже два дня бьюсь- ничего в голову не приходит!

Есть такой рабочий запрос: он подсчитывает сумму товаров по определенной хар-ке (extra_field_5) и группирует все это дело, по id характеристики:

Код: sql
1.
2.
3.
4.
SELECT SUM( product_quantity ) AS  `quantity` , extra_field_5
            FROM  `vmuag_jshopping_products` 
            WHERE  `product_publish` =1
            GROUP BY  `extra_field_5`



Теперь вот из этой таблицы:

-- Структура таблицы `vmuag_jshopping_products_extra_field_values`--CREATE TABLE IF NOT EXISTS `vmuag_jshopping_products_extra_field_values` ( `id` int(11) NOT NULL AUTO_INCREMENT `field_id` int(11) NOT NULL `ordering` int(6) NOT NULL `name_en-GB` varchar(255) NOT NULL `name_ru-RU` varchar(255) NOT NULL PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=87 ;---- Дамп данных таблицы `vmuag_jshopping_products_extra_field_values`--INSERT INTO `vmuag_jshopping_products_extra_field_values` (`id` `field_id` `ordering` `name_en-GB` `name_ru-RU`) VALUES(1 1 1 '21 Квт' '21 Квт')(2 1 2 '26 Квт' '26 Квт')(6 1 7 '35 Квт' '35 Квт')(7 1 10 '53 Квт' '53 Квт')(8 1 15 '70 Квт' '70 Квт')(9 1 16 '82 Квт' '82 Квт')(10 1 17 '106 Квт' '106 Квт')(11 1 18 '123 Квт' '123 Квт')(12 1 19 '140 Квт' '140 Квт')(13 1 20 '164 Квт' '164 Квт')(14 1 21 '176 Квт' '176 Квт')(17 3 1 'China' 'Китай')(18 3 2 'Malaysia' 'Малайзия')(19 3 3 'Japan' 'Япония')(20 3 4 'Turkey' 'Турция')(21 3 5 'Korea' 'Корея')(22 3 6 'Thailand' 'Тайланд')(23 4 1 'Wall Split System' 'Настенные сплит системы')(24 4 2 'Duct' 'Канальные')(25 4 3 'Multi-split system' 'Мульти сплит системы')(26 4 4 'Cassette' 'Кассетные')(27 4 5 'Wall ceiling' 'Напольно-потолочные')(28 4 6 'Column' 'Колонные')(29 4 7 'Mobile' 'Мобильные')(30 5 1 'Akvilon' 'Akvilon')(31 5 2 'Fujitsu' 'Fujitsu')(32 5 3 'BERLINGTOUN' 'BERLINGTOUN')(33 5 4 'BALLU' 'BALLU')(34 5 5 'Daikin' 'Daikin')(35 5 6 'DAINTEX' 'DAINTEX')(36 5 7 'GENERAL CLIMATE' 'GENERAL CLIMATE')(37 5 8 'HITACHI' 'HITACHI')(38 5 9 'LG' 'LG')(39 5 10 'McQuay' 'McQuay')(40 5 11 'Pioneer' 'Pioneer')(41 5 12 'PANASONIC' 'PANASONIC')(42 5 13 'SAMSUNG' 'SAMSUNG')(43 5 14 'TOSHIBA' 'TOSHIBA')(44 5 15 'TOSHIBA (Japan)' 'TOSHIBA (Япония)')(45 5 16 'AERONIK' 'AERONIK')(46 5 17 'Mitsubishi Heavy' 'Mitsubishi Heavy')(47 5 18 'Mitsubishi Electric' 'Mitsubishi Electric')(48 5 19 'KENTATSU' 'KENTATSU')(49 5 20 'Lessar' 'Lessar')(50 5 21 'ZANUSSI' 'ZANUSSI')(51 5 22 'Zerten' 'Zerten')(52 5 23 'Midea' 'Midea')(53 6 1 'cooling' 'Охлаждение')(54 6 2 'Cooling / Heating' 'Охлаждение/Обогрев')(55 7 1 'invertornii' 'Инверторный')(56 7 2 'on-off' 'Не инверторный')(64 9 1 '20' '20')(65 9 2 '25' '25')(66 9 3 '35' '35')(67 9 4 '50' '50')(68 9 5 '60' '60')(69 5 24 'Royal Clima' 'Royal Clima')(70 5 25 'Hisense' 'Hisense')(71 9 6 '70' '70')(72 9 8 '100' '100')(73 9 9 '120' '120')(74 9 10 '140' '140')(75 9 11 '160' '160')(76 1 4 '' '28 кВт')(77 1 8 '' '39 кВт')(78 1 11 '' '54 кВт')(79 1 12 '' '65 кВт')(80 1 3 '' '27 кВт')(81 1 6 '' '33 кВт')(82 1 9 '' '50 кВт')(83 1 13 '' '67 кВт')(84 1 5 '' '32 кВт')(85 1 14 '' '68 кВт')(86 9 7 '80' '80');
мне надо вытащить наименование характеристики (поле name_ru-RU) с учетом того что поле extra_field_5 из предыдущей таблице, назовем ее table1 = полю id из приведенной таблице, точнее сказать оно не полностью идентично, но все значения из table1.extra_field_5 есть в table2.id.

Т.е. в итоге к результату первого запроса мне нужно добавить столбец с названиями хар-к, которые есть в первом запросе.

Возможно ли это реализовать через JOIN?
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870075
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anddm2001Возможно ли это реализовать через JOIN?Да, возможно.
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870146
anddm2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понимаю, JOIN не работает после WHERE или GROUP BY. Как тогда быть с первым запросом, который подсчитывает сумму? Я не могу его разделить на две части, чтобы в середине применить JOIN.
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870173
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anddm2001Как тогда быть с первым запросом, который подсчитывает сумму?Оставить как есть, к его результату приджойнить названия.
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870181
anddm2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело, что просто приджойнить не получается, чтобы не быть голословным вот код, который пробовал:

Код: sql
1.
2.
3.
4.
5.
SELECT SUM( product_quantity ) AS  `quantity` , `extra_field_5`
            FROM  `vmuag_jshopping_products` 
            WHERE  `product_publish` =1
            GROUP BY  `extra_field_5`
LEFT JOIN `vmuag_jshopping_products_extra_field_values`.`name_ru-RU` ON `vmuag_jshopping_products_extra_field_values`.`id` = `vmuag_jshopping_products`.`extra_field_5` WHERE `vmuag_jshopping_products`.`extra_field_5`=5
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870187
anddm2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данный код возвращает ошибку: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN `vmuag_jshopping_products_extra_field_values`.`name_ru-RU` ON `vmuag_j' at line 5
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870220
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следует оформить первый запрос как подзапрос, и использовать его во внешнем запросе как таблицу.
Код: sql
1.
2.
3.
4.
5.
6.
select ***
from (
     select ... from ... where ...
     ) subquery
join table on subquery.fields = table.fields
where ...
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870235
anddm2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо!

Сделал вот так:

Код: sql
1.
2.
3.
4.
5.
6.
select *
from (SELECT SUM( product_quantity ) AS  `quantity` , `extra_field_5`
            FROM  `vmuag_jshopping_products` 
            WHERE  `product_publish` =1
            GROUP BY  `extra_field_5`) subquery
join vmuag_jshopping_products_extra_field_values on vmuag_jshopping_products_extra_field_values.id = subquery.extra_field_5 WHERE vmuag_jshopping_products_extra_field_values.field_id=5



Получилось, то, что нужно!
...
Рейтинг: 0 / 0
Запрос на выборку данных с использованием JOIN.
    #38870246
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не экономьте на алиасах, даже там, где нет неоднозначностей - это не только повысит читабельность, но и упростит жизнь парсеру.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на выборку данных с использованием JOIN.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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