я в настоящее время:MySQL Выбор сложный суб запрос в поле
SELECT tbl_review.*, users.first_name, users.last_name, (
SELECT order_ns.tran_date
FROM order_ns
LEFT JOIN product_2_order_ns.external_order_id = order_ns.order_id
WHERE product_2_order_ns.bkfno IN :id
ORDER BY order_ns.trandate ASC
LIMIT 1
) as purchase_date
FROM tbl_review
LEFT JOIN users ON users.sequal_user_id = tbl_review.user_id
WHERE tbl_review.product_id IN :id AND tbl_review.approved = 1
Что, в свою подзапросом, выбирает порядок пользователь имеет который имеет продукт в вопросе (определенный в :id
) Получить самая старая дата транзакции в файле для одного из найденных заказов.
Я бы очень хотел, чтобы это было связано с одним вызовом базы данных (на самом деле не хотите снова звонить для каждого возвращаемого пользователя только для одного поля или даже делать запрос диапазона для всех пользователей), но, очевидно, этот конкретный запрос не работает.
Что делать, если что-нибудь, чтобы заставить это работать?
Я не могу сделать дополнительный запрос в объединении, так как они представляют собой две отдельные части данных, подзапрос должен возвращать детали для каждой строки в основном запросе.
Какая ошибка. вы можете сделать sqlfiddle для этого. – developerCK
По моему опыту синтаксис «IN» принимает диапазон значений как «массив», поэтому вы должны делать что-то вроде 'IN ('value1')'. Если это вещь PDO, вам понадобится 'IN (: id)'. Если вы не проходите в нескольких значениях, тогда будет равен равный знак '=' – MonkeyZeus
@MonkeyZeus. У меня на самом деле есть библиотека PDO, которая делает это для меня. – Sammaye