powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / sql запрос
6 сообщений из 6, страница 1 из 1
sql запрос
    #39025692
Фотография re_qas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, есть три таблицы.
table1: parent_id field1 field2...
table2: id attr_id parent_id value
table3: attr_id name dif_name(eng)

делаю пока так
SELECT * FROM table1 WHERE parent_id = search_id
и
SELECT t1.value,t2.diff_name FROM table2 as t1 LEFT JOIN table3 as t2 ON t1.attr_id = t2.attr_id WHERE t1.parent_id = search_id

вопрос, как эти два запроса объединить в один, так чтобы получилось что-то вроде
поля table1 а потом table3.dif_name => table2.value, т.е. массив типа
array(parent_id=>'1', field1=>'111', field2=>'222',...., t3.dif_name=>t2.value,t3.dif_name=>t2.value,...)
в общем своего рода сделать SELECT запрос чтобы нарастить таблицу вправо на количество записей в таблице 3
...
Рейтинг: 0 / 0
sql запрос
    #39026861
Павел Гужанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
select t1.field1, t1.field2, t3.dif_name
from table1 t1
join table2 t2 on t2.parent_id = t1.parent_id
join table3 t3 on t3.attr_id = t2.attr_id
where t1.parent_id = search_id



Или left join, если не у всех значений есть соответствия по всем таблицам
...
Рейтинг: 0 / 0
sql запрос
    #39027450
Фотография re_qas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Гужанов,

получится куча дубликатов...
так как в t2 rows>3 с одинаковым parent_id
...
Рейтинг: 0 / 0
sql запрос
    #39027452
Фотография re_qas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сейчас на примере попробую
Код: php
1.
2.
3.
4.
t1
p_id  f1   f2
1      str  str1
2      ttt   ttt


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
t2
id a_id p_id val
1  1     1     ok
2  2     1     no
3  3     1     1.1
4  1     2     none
5  2     2     yes
6  3     2     0.4


Код: php
1.
2.
3.
4.
5.
t3
a_id name    d_name
1     status   stat
2     include  inc
3     version ver


как получить одним запросом результат
Код: php
1.
2.
p_id f1   f2     stat inc ver
1     str  str1  ok   no  1.1



Модератор: Тема перенесена из форума "PHP, Perl, Python".
...
Рейтинг: 0 / 0
sql запрос
    #39027569
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если контент таблицы t3 жёстко фиксирован - можно либо привязывать 3 её копии, либо одну с последующей группировкой и формированием полей на кейсах. Иначе только динамически через prepared statement.
Искать по форуму по словам EAV и pivot.
...
Рейтинг: 0 / 0
sql запрос
    #39030026
Фотография re_qas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а реально чтобы одним запросом без кейса сделать чтобы данные второй таблицы шли как массив, т.е.
Код: sql
1.
SELECT t1.value,t2.diff_name FROM table2 as t1 LEFT JOIN table3 as t2 ON t1.attr_id = t2.attr_id WHERE t1.parent_id = search_id


результат сделать как поле с массивом в
Код: sql
1.
SELECT *, {{ARRAY}} FROM table1 WHERE parent_id = search_id

?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / sql запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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