У меня есть 2 таблицы ссылок по userPhone
.MySQL. Выберите последнюю запись (по времени создания) из второй таблицы
Таблица пользователей
+-----------+-------+----------+--------+
| userPhone | name | address | car |
+-----------+-------+----------+--------+
| 096111111 | Bill | adr1 | {json} |
+-----------+-------+----------+--------+
| 097333333 | Max | adr2 | {json} |
+-----------+-------+----------+--------+
| 098888888 | Denis | adr3 | {json} |
+-----------+-------+----------+--------+
Таблица Заказы
+-----------+---------+-------+-------+------------+
| userPhone | orderID | title | Descr | createdTS |
+-----------+---------+-------+-------+------------+
| 096111111 | 59 | ttl1 | qqqq | 1444999740 |
+-----------+---------+-------+-------+------------+
| 096111111 | 58 | ttl2 | wwww | 1444999650 |
+-----------+---------+-------+-------+------------+
| 096111111 | 56 | ttl3 | rrrrr | 1444999600 |
+-----------+---------+-------+-------+------------+
| 096111111 | 57 | ttl4 | ttttt | 1444999540 |
+-----------+---------+-------+-------+------------+
Я использую запрос, как это, и он работает хорошо:
SELECT
`users`.`userPhone`,
`users`.`name`,
`users`.`address`,
`users`.`car`,
(SELECT `title` FROM `orders` WHERE `orders`.`userPhone` = `users`.`userPhone` AND `orders`.`orderTS` < NOW() ORDER BY `orders`.`createdTS` DESC LIMIT 1) as `title`,
(SELECT `descr` FROM `orders` WHERE `orders`.`userPhone` = `users`.`userPhone` AND `orders`.`orderTS` < NOW() ORDER BY `orders`.`createdTS` DESC LIMIT 1) as `descr`
FROM
`users`
LEFT JOIN `orders` USING (`userPhone`)
WHERE
`users`.`userPhone` like '%1111%';
НО я думаю, дополнительный SELECT работают медленно. Есть ли лучший и быстрый способ решить эту проблему?
Как получить тот же результат, используя другой запрос (возможно, без дополнительных SELECT).
Попробуйте только ** РЕГИСТРИРУЙТЕСЬ ** заказы вместо ** LEFT JOIN **. NB, если у вас нет записи во второй таблице, ваш выбор будет пустым – Lucarnosky