|
|
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
Уважаемые знатоки sql запросов! Помогите с выборкой из двух таблиц. Уже два дня бьюсь- ничего в голову не приходит! Есть такой рабочий запрос: он подсчитывает сумму товаров по определенной хар-ке (extra_field_5) и группирует все это дело, по id характеристики: Код: sql 1. 2. 3. 4. Теперь вот из этой таблицы: -- Структура таблицы `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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 00:26:14 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
anddm2001Возможно ли это реализовать через JOIN?Да, возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 09:48:38 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, JOIN не работает после WHERE или GROUP BY. Как тогда быть с первым запросом, который подсчитывает сумму? Я не могу его разделить на две части, чтобы в середине применить JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 10:56:37 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
anddm2001Как тогда быть с первым запросом, который подсчитывает сумму?Оставить как есть, к его результату приджойнить названия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 11:17:54 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что просто приджойнить не получается, чтобы не быть голословным вот код, который пробовал: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 11:27:08 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
Данный код возвращает ошибку: #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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 11:29:49 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
Следует оформить первый запрос как подзапрос, и использовать его во внешнем запросе как таблицу. Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 11:58:03 |
|
||
|
Запрос на выборку данных с использованием JOIN.
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо! Сделал вот так: Код: sql 1. 2. 3. 4. 5. 6. Получилось, то, что нужно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2015, 12:09:10 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38870181&tid=1833618]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 348ms |

| 0 / 0 |
