@Dvoeglazov

Как правильно создать такой SQL запрос?

Есть 3 связанные таблицы:
spoiler

Таблица users_signin

id Первичный int(11)
oauth_provider enum('', 'linkedin')
oauth_uid varchar(100)
first_name varchar(50)
last_name varchar(50)
email varchar(100)
location varchar(255)
picture varchar(255)
profile_url varchar(255)
created datetime
industry varchar(255)

Таблица users_positions

users_id int(11)
unique_id int(11)
location varchar(255)
title varchar(255)
startDate varchar(255)
company_id int(11)

users_id - связь с users_signin, как id
company_id - связь с users_company, как id

Таблица users_company

id Первичный int(11)
unique_id int(11)
industry varchar(255)
name varchar(255)
type varchar(255)


Мой SQL запрос:
$rows = $wpdb->get_results( 
            "SELECT 
            nam.id, 
            nam.first_name, 
            nam.last_name, 
            nam.email, 
            nam.location, 
            nam.picture, 
            nam.profile_url, 
            nam.industry, 
            nam.created, 
            pos.location as loc_work, 
            pos.title as profession, 
            com.name as com_name, 
            com.industry as com_inds 
            from 
            $table_name nam, 
            $table_positions pos, 
            $table_company com 
            WHERE nam.oauth_provider = 'linkedin' 
            AND nam.id = pos.users_id 
            AND pos.company_id = com.id 
            limit  $offset, $limit" 
        );

Вывод информации:
spoiler

Array
(
[0] => stdClass Object
(
[id] => 1
[first_name] => Хабиб
[last_name] => Макгрэгович
[email] => dvoeglazov.ilya@yandex.ru
[location] => United States
[picture] => https://media.licdn.com/dms/image/C4D03AQF7xeYVfWV...
[profile_url] => www.linkedin.com/in/%D1%85%D0%B0%D0%B1%D0%B8%D0%B1...
[industry] => Information Technology and Services
[created] => 2018-10-04 23:13:00
[loc_work] => Saint Petersburg, Russian Federation
[profession] => Frontend Engineer
[com_name] => Paladin Engineering
[com_inds] => Информационные технологии и услуги
)

[1] => stdClass Object
(
[id] => 1
[first_name] => Хабиб
[last_name] => Макгрэгович
[email] => dvoeglazov.ilya@yandex.ru
[location] => United States
[picture] => https://media.licdn.com/dms/image/C4D03AQF7xeYVfWV...
[profile_url] => www.linkedin.com/in/%D1%85%D0%B0%D0%B1%D0%B8%D0%B1...
[industry] => Information Technology and Services
[created] => 2018-10-04 23:13:00
[loc_work] =>
[profession] => Капитан команды
[com_name] => Яндекс Терра
[com_inds] => Нефтяная и энергетическая промышленность
)

)


Вопрос:

Как избежать дублирования информации?
Я хочу, чтобы SQL ответ был таким:

[0] => stdClass Object
(
[id] => 1
[first_name] => Хабиб
[last_name] => Макгрэгович
[email] => dvoeglazov.ilya@yandex.ru
[location] => United States
[picture] => https://media.licdn.com/dms/image/C4D03AQF7xeYVfWV...
[profile_url] => www.linkedin.com/in/%D1%85%D0%B0%D0%B1%D0%B8%D0%B1...
[industry] => Information Technology and Services
[created] => 2018-10-04 23:13:00
[loc_work] => Array( тут 1 и более )
[profession] => Array(тут 1 и более )
[com_name] => Array(тут 1 и более )
[com_inds] => Array(тут 1 и более )
)

Или мне нужно средствами php делать такой массив?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
@Jorik86
я так понял в результирующий массив вы сразу хотите группировать значения по аттрибутам.
[loc_work] => Array( тут 1 и более )
[profession] => Array(тут 1 и более )
[com_name] => Array(тут 1 и более )
[com_inds] => Array(тут 1 и более )


Для этого вам может подойти group_concat
https://dev.mysql.com/doc/refman/8.0/en/group-by-f...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Если есть связи они должны быть описаны, я так понимаю Вам нужен join
Ответ написан
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
делаете JOIN и выбираете все данные которые вам нужны из всех таблиц
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы