Eсть 2 таблицы в БД: users
+----+-------+-------------+
| id | name | lastname |
+----+-------+-------------+
| 1 | Иван | Иванов |
| 2 | Петр | Петров |
+----+-------+-------------+
users_info
+----+-------+-------+---------+
| id | user | field | data |
+----+-------+-----------------+
| 1 | 2 | 1 | Петрович|
| 2 | 1 | 1 | Иванович|
| 3 | 1 | 3 | +791398 |
| 4 | 1 | 4 | Москва |
| 5 | 2 | 4 | Питер |
| 6 | 2 | 3 | 892641 |
+----+-------+-------+---------+
Как можно получить значения в таком виде:
1 Иванов Иван Иванович +791398 Москва
2 Петров Петро Петрович 892641 Питер
Можно ли это сделать в mysql? я делаю так:
SELECT u.id, u.username, u.firstname, u.lastname, l.data, l.fieldid
FROM mdl_user as u
LEFT JOIN mdl_user_info_data AS l on u.id = l.userid
Но получаю:
1 Иван Иванов +791398
1 Иван Иванов Москва
1 Иван Иванов Иванович
2 Петр Петров 892641
2 Петр Петров Питер
2 Петр Петров Петрович
Запрос делаю в mysql и обрабатываю php. Или в php уже как-то склеить их?
Вы можете воспользоваться следующим запросом:
SELECT
users.*,
middle_name.data as middle_name,
phone.data as phone,
city.data as city
FROM users
LEFT JOIN users_info as middle_name ON middle_name.user = users.id and middle_name.field=1
LEFT JOIN users_info as phone ON phone.user = users.id and phone.field=3
LEFT JOIN users_info as city ON city.user = users.id and city.field=4
;
Проверить запрос на SQLize.online
В запросе испльзуется многократное соединение таблицы с различными условиями и алиасами
Другой подход pivot для таблицы users_info и соединение с таблицей usrs:
SELECT
users.*,
GROUP_CONCAT(IF(field=1, data, null)) as middle_name,
GROUP_CONCAT(IF(field=3, data, null)) as phone,
GROUP_CONCAT(IF(field=4, data, null)) as city
FROM users_info
JOIN users ON users.id = users_info.user
GROUP BY user, users.id, users.name, users.lastname;
Пример здесь
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня на сайте(DRUPAL) есть модуль цитата дня, каждый день меняется цитата, мне надо что бы она менялась один раз в неделю, как реализовать, я что-то...
Пример беру c интернет магазинf alloua
Не могу составить запрос к базе mqsqlК примеру в базе есть слова:
Подскажите плзЕсть задача на php никак не могу придумать как ее реализовать: Вобщем Есть таблица с пользователями, пользователи делятся на две...