powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Совмещение двух таблиц
3 сообщений из 3, страница 1 из 1
Совмещение двух таблиц
    #39322296
NewBody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно получить совмещение двух таблиц. У каждого продукта есть множество атрибутов, но изначально
известны требуемые 2-а (a_id = 5 и 8)(в запросе они меняться не будут) и параметр m_id (он меняется, допустим = 1)

(id = p_id)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
     
    product
---------------
| id |  name  |
---------------
| 1  |  Name  |
| 2  |  ....  |


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
       attribute
-------------------------
|p_id|a_id|m_id|  text  |
-------------------------
| 1  | 5  | 1  | aaaaaa |
| 1  | 8  | 1  | AAAAAA |
| 2  | 5  | 1  | bbbbbb |
| 2  | 8  | 1  | BBBBBB |
| 2  | 5  | 2  | ...... |
| 2  | 8  | 2  | ...... |


Требуемый результат:
-------------------------
| id |    a    |   b    |
-------------------------
| 1  |  aaaaaa | AAAAAA |
| 2  |  bbbbbb | BBBBBB |


Решил задачу таким образом:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT p.id as id, productA.a as a, productB.b as b
FROM product as p
INNER JOIN 
(
    SELECT text as a, attribute.p_id as id
    FROM attribute, product
    WHERE attribute.p_id = product.id AND m_id = '1' AND a_id = '5'    
) as productA ON productA.id = p.id
INNER JOIN 
(
    SELECT text as b, attribute.p_id as id
    FROM attribute, product
    WHERE attribute.p_id = product.id AND m_id = '1' AND a_id = '8'    
) as productB ON productB.id = p.id
GROUP BY id



Можно ли попроще получить требуемый результат??
...
Рейтинг: 0 / 0
Совмещение двух таблиц
    #39322317
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Схематично:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT p.id,a1.text,a2.text
FROM product p, attribute a1, attribute a2
WHERE a1.p_id=p.id
  AND a1.m_id = '1' 
  AND a1.a_id = '5'
  AND a2.p_id=p.id
  AND a2.m_id = '1' 
  AND a2.a_id = '8'


Предполагается, что на комбинацию полей attribute(p_id,a_id,m_id) наложено требование уникальности. Иначе добавить GROUP BY p.id и обернуть оба text в, скажем, MIN().
...
Рейтинг: 0 / 0
Совмещение двух таблиц
    #39322319
NewBody
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спс!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Совмещение двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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