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

Есть две таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
CREATE TABLE IF NOT EXISTS `products` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `brand_id` int(11) DEFAULT NULL,
  `name` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
  `description` text COLLATE utf8_unicode_ci,
  `params` text COLLATE utf8_unicode_ci,
  `visible` tinyint(1) NOT NULL DEFAULT '1',
  `meta_title` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  `meta_keywords` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  `meta_description` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `url` (`url`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;

INSERT INTO `products` (`id`, `url`, `brand_id`, `name`, `description`, `params`, `visible`, `meta_title`, `meta_keywords`, `meta_description`) VALUES
(1, 'Product1', NULL, 'Продукт 1', NULL, NULL, 1, NULL, NULL, NULL),
(2, 'Product2', NULL, 'Продукт 2', NULL, NULL, 1, NULL, NULL, NULL),
(3, 'Product3', NULL, 'Продукт 3', NULL, NULL, 1, NULL, NULL, NULL),
(4, 'Product4', NULL, 'Продукт 4 ', NULL, NULL, 1, NULL, NULL, NULL),
(5, 'Product5', NULL, 'Продукт 5', NULL, NULL, 1, NULL, NULL, NULL);

-- --------------------------------------------------------

CREATE TABLE IF NOT EXISTS `img_product` (
  `product_id` int(11) NOT NULL,
  `img` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `param` enum('original','default','big','small') COLLATE utf8_unicode_ci NOT NULL,
  UNIQUE KEY `name` (`img`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `img_product` (`product_id`, `img`, `param`) VALUES
(1, 'Картика 1.1', 'default'),
(1, 'Картика 1.3', 'original'),
(1, 'Картика 1.4', 'big'),
(2, 'Картика 2.1', 'big'),
(2, 'Картика 2.2', 'original'),
(2, 'Картика 2.3', 'default'),
(2, 'Картика 2.4', 'small'),
(1, 'Картинка 1.2', 'small'),
(3, 'Картинка 3.1', 'default'),
(3, 'Картинка 3.2', 'original'),
(3, 'Картинка 3.3', 'small'),
(3, 'Картинка 3.4', 'big'),
(4, 'Картинка 4.1', 'big'),
(4, 'Картинка 4.2', 'default'),
(4, 'Картинка 4.3', 'small'),
(4, 'Картинка 4.4', 'original'),
(5, 'Картинка 5.1', 'big'),
(5, 'Картинка 5.2', 'default'),
(5, 'Картинка 5.3', 'small'),
(5, 'Картинка 5.4', 'original');



Хочу вывести все продукты + объеденить картинки с продуктами в одном массив.
Подскажите, пожалуйста, SQL запрос.

P.S. такой не подойдет, ибо он выводит по продуктов и под каждый фотку отдельно
Код: sql
1.
2.
SELECT *,  `img_product`.`img` FROM `products`
          LEFT JOIN `img_product` ON `img_product`.`product_id` = `products`.`id`
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535277
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niko42P.S. такой не подойдет, ибо он выводит по продуктов и под каждый фотку отдельно
Фраза не сильно вменяемая...

Но если исходить из духа, то тебе, вероятно, нужны GROUP BY и GROUP_CONCAT().
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535278
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

К сожалению, GROUP BY не подойет, ибо будет выводить "Продукт 1 == Картинка 1", а надо "Продукт 1 == Картинка 1, картинка 2, картинка 3"
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535283
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niko42Akina,

К сожалению, GROUP BY не подойет, ибо будет выводить "Продукт 1 == Картинка 1", а надо "Продукт 1 == Картинка 1, картинка 2, картинка 3"Наоборот, именно по этому и подойдет.
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535311
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Если делать по такому запросу:
Код: sql
1.
2.
SELECT *,  `img_product`.`img` FROM `products`
          LEFT JOIN `img_product` ON `img_product`.`product_id` = `products`.`id` GROUP BY `id`


То результат действий:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
array(27) { ["id"]=> string(1) "1" [0]=> string(1) "1" ["url"]=> string(8) "Product1" [1]=> string(8) "Product1" ["brand_id"]=> NULL [2]=> NULL ["name"]=> string(16) "Продукт 1" [3]=> string(16) "Продукт 1" ["description"]=> NULL [4]=> NULL ["params"]=> NULL [5]=> NULL ["visible"]=> string(1) "1" [6]=> string(1) "1" ["meta_title"]=> NULL [7]=> NULL ["meta_keywords"]=> NULL [8]=> NULL ["meta_description"]=> NULL [9]=> NULL ["product_id"]=> string(1) "1" [10]=> string(1) "1" ["img"]=> string(18) "Картика 1.1" [11]=> string(18) "Картика 1.1" ["param"]=> string(7) "default" [12]=> string(7) "default" [13]=> string(18) "Картика 1.1" } 


array(27) { ["id"]=> string(1) "2" [0]=> string(1) "2" ["url"]=> string(8) "Product2" [1]=> string(8) "Product2" ["brand_id"]=> NULL [2]=> NULL ["name"]=> string(16) "Продукт 2" [3]=> string(16) "Продукт 2" ["description"]=> NULL [4]=> NULL ["params"]=> NULL [5]=> NULL ["visible"]=> string(1) "1" [6]=> string(1) "1" ["meta_title"]=> NULL [7]=> NULL ["meta_keywords"]=> NULL [8]=> NULL ["meta_description"]=> NULL [9]=> NULL ["product_id"]=> string(1) "2" [10]=> string(1) "2" ["img"]=> string(18) "Картика 2.1" [11]=> string(18) "Картика 2.1" ["param"]=> string(3) "big" [12]=> string(3) "big" [13]=> string(18) "Картика 2.1" } 


array(27) { ["id"]=> string(1) "3" [0]=> string(1) "3" ["url"]=> string(8) "Product3" [1]=> string(8) "Product3" ["brand_id"]=> NULL [2]=> NULL ["name"]=> string(16) "Продукт 3" [3]=> string(16) "Продукт 3" ["description"]=> NULL [4]=> NULL ["params"]=> NULL [5]=> NULL ["visible"]=> string(1) "1" [6]=> string(1) "1" ["meta_title"]=> NULL [7]=> NULL ["meta_keywords"]=> NULL [8]=> NULL ["meta_description"]=> NULL [9]=> NULL ["product_id"]=> string(1) "3" [10]=> string(1) "3" ["img"]=> string(20) "Картинка 3.1" [11]=> string(20) "Картинка 3.1" ["param"]=> string(7) "default" [12]=> string(7) "default" [13]=> string(20) "Картинка 3.1" } 


array(27) { ["id"]=> string(1) "4" [0]=> string(1) "4" ["url"]=> string(8) "Product4" [1]=> string(8) "Product4" ["brand_id"]=> NULL [2]=> NULL ["name"]=> string(17) "Продукт 4 " [3]=> string(17) "Продукт 4 " ["description"]=> NULL [4]=> NULL ["params"]=> NULL [5]=> NULL ["visible"]=> string(1) "1" [6]=> string(1) "1" ["meta_title"]=> NULL [7]=> NULL ["meta_keywords"]=> NULL [8]=> NULL ["meta_description"]=> NULL [9]=> NULL ["product_id"]=> string(1) "4" [10]=> string(1) "4" ["img"]=> string(20) "Картинка 4.1" [11]=> string(20) "Картинка 4.1" ["param"]=> string(3) "big" [12]=> string(3) "big" [13]=> string(20) "Картинка 4.1" } 


array(27) { ["id"]=> string(1) "5" [0]=> string(1) "5" ["url"]=> string(8) "Product5" [1]=> string(8) "Product5" ["brand_id"]=> NULL [2]=> NULL ["name"]=> string(16) "Продукт 5" [3]=> string(16) "Продукт 5" ["description"]=> NULL [4]=> NULL ["params"]=> NULL [5]=> NULL ["visible"]=> string(1) "1" [6]=> string(1) "1" ["meta_title"]=> NULL [7]=> NULL ["meta_keywords"]=> NULL [8]=> NULL ["meta_description"]=> NULL [9]=> NULL ["product_id"]=> string(1) "5" [10]=> string(1) "5" ["img"]=> string(20) "Картинка 5.1" [11]=> string(20) "Картинка 5.1" ["param"]=> string(3) "big" [12]=> string(3) "big" [13]=> string(20) "Картинка 5.1" }



Если мы посмотрим на результат и увидем, что не все выводятся картинки к одному продукту, а у каждого продукта по 5 картинок
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535317
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли делать по такому запросу:
и где тут предложенный GROUP_CONCAT
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535326
niko42,

возьми себе за правило и никогда не отступай от него: если запрос с группировкой, то все поля, упомянутые во фразе SELECT должны быть либо во фразе GROUP BY, либо заключены в агрегатную функцию.
Это поможет избежать нелепостей и логических ошибок, которые ты, похоже, не в состоянии сам заметить.
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535327
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добился чего хотел:
Код: sql
1.
2.
3.
4.
SELECT a.id, GROUP_CONCAT(b.img  SEPARATOR '::') AS img_product
                FROM `products` a
                LEFT JOIN `img_product` b ON a.id = b.product_id
                GROUP BY a.id
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535328
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эхniko42,

возьми себе за правило и никогда не отступай от него: если запрос с группировкой, то все поля, упомянутые во фразе SELECT должны быть либо во фразе GROUP BY, либо заключены в агрегатную функцию.
Это поможет избежать нелепостей и логических ошибок, которые ты, похоже, не в состоянии сам заметить.

К сожалению, я вообще SQL не знаю - даже документация в глаза не видел
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535330
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
niko42даже документация в глаза не виделЭто дело легко поправимо - MySQL 5.5 Reference Manual .
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535341
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftniko42даже документация в глаза не виделЭто дело легко поправимо - MySQL 5.5 Reference Manual .

Спасибо!=)

Ну и последний вопрос, добью я всетки:

Как добавить в запрос параметр (Хочу получить продукт id = 2)
Код: sql
1.
2.
3.
4.
SELECT a.*, GROUP_CONCAT(b.img  SEPARATOR ', ') AS img_product
                FROM `products` a
                LEFT JOIN `img_product` b ON a.id = b.product_id
                GROUP BY a.id
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535346
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
WHERE id=2
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535349
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добил всётаки:

Код: sql
1.
2.
3.
4.
5.
 SEPARATOR ', ' ) AS img_product
                FROM `products` a
                LEFT JOIN `img_product` b ON a.id = b.product_id
                WHERE a.id = 2
                GROUP BY a.id
...
Рейтинг: 0 / 0
SQL запросы из двух таблиц
    #38535350
niko42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за помощь!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL запросы из двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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