У меня есть таблица1, например:
orderID userId orderName orderTime...
1 11
2. 12
3. 11
4. 14
5. 11
6. 13
7. 11
8. 15
9. 16
10. 11
... ...
У меня есть другая таблица table2:
table2ID orderID item price ....
101 1 Apple 1.99
102 1 Banana 2.99
103 1 Grapes 0.99
104 4 pizza 6.99
105 4 drink 0.99
105. 3 chicken 1.99
106. 3 apple 1.99
Я пробовал это:
SELECT a.*, b.* FROM `table1` a
RIGHT JOIN table2 b on a.orderID = b.orderID
WHERE a.userID = 11 order by a.`orderTime` DESC LIMIT 25;
Я хочу получить до 10 уникальных идентификаторов заказов из таблицы 1 пользователя 11 и все детали этих 10 идентификаторов из таблицы 2. Если я сделаю LIMIT 25, я не получу всю информацию. Я хочу, чтобы мой вывод был следующим:
orderID userId orderName orderTime... table2ID orderID item price
1 11 101 1 Apple 1.99
1 11 102 1 Banana 2.99
1 11 103 1 Grapes 0.99
3 11 105 3 chicken 1.99
3 11 106 3 apple 1.99
SELECT a.*, b.*
FROM ( SELECT *
FROM a
WHERE a.userID = 11
LIMIT 10) as a
JOIN b
ON a.orderID = b.orderID
Спасибо, @Juan Carlos.. Таким образом, я получаю то, что хотел.. Я хочу получить последние 10 записей.. SELECT a.*, b.* FROM ( SELECT * FROM a WHERE a.userID = 11 order by a .orderTime DESC LIMIT 10) как JOIN b ON a.orderID = b.orderID Если я это сделаю, я ничего не получу.
Это странно. Попробуйте сначала SELECT * FROM a WHERE a.userID = 11 order by a.orderTime DESC LIMIT 10
Да, это сработало. Но загрузка занимает так много времени.. Так что я ищу это.. Большое спасибо за вашу помощь.
У вас есть индекс для идентификатора пользователя? Составной идентификатор таблицы A (userid, orderTime)
может помочь
Подумайте о своей логике. Ваш запрос объединяет 2 таблицы, затем выберите 10. Вам нужно выбрать 10 из таблицы 1, а затем получить все записи для 10 записей из таблицы 1.