У меня есть запрос, который использует несколько левых объединений для возврата данных. Дилемма заключается в том, что я хочу LIMIT
, а также ORDER BY
результат одного из левых объединений и, таким образом, ограничение числа возвращаемых строк.MYSQL Ограничивающий запрос левого соединения
В таблице я пытаюсь сделать заказ и предел table4
Мой запрос:
SELECT SQL_CALC_FOUND_ROWS e.meta_1, a.requestid, b.clientid, c.job_description, d.forename
FROM quotations_request AS a
LEFT JOIN table1 AS b ON (a.assigned_to = b.userid)
LEFT JOIN table2 AS c ON (a.job_costing = c.jobid)
LEFT JOIN table3 AS d ON (a.clientid = d.clientid)
LEFT JOIN table4 AS e ON (e.quotationid = a.requestid)
WHERE a.archived = '0' AND (e.meta_1 = LCASE('requested'))
Что я пробовал:
SELECT SQL_CALC_FOUND_ROWS statuss.meta_1, a.requestid, b.clientid, c.job_description, d.forename,
FROM quotations_request AS a
LEFT JOIN table1 AS b ON (a.assigned_to = b.userid)
LEFT JOIN table2 AS c ON (a.job_costing = c.jobid)
LEFT JOIN table3 AS d ON (a.clientid = d.clientid)
LEFT JOIN (Select meta_1 from table4 where quotationid = a.requestid ORDER BY uploaded_date DESC LIMIT 0, 1)
as statuss ON (statuss.quotationid = a.requestid)
WHERE a.archived = '0' AND (statuss.meta_1 = LCASE('requested'))
Результат:
После попытки выше я получил ошибку говоря a.requestid
является Unkown в ИНЕКЕ (за исключением последнего соединения слева)
И использование 'LIMIT' в подзапросе кажется разумным ... так что произошло дальше? –
@TimBiegeleisen Извините, я должен был добавить (обновленный вопрос), а потом закончил с ошибкой, говорящей, что «a.requestid» - это поле unkown. помните, что a.requestid из основной таблицы во второй строке –
Дилемма, описанная в вашем первом абзаце, не имеет ничего общего с ошибкой, которая мешает вашему запросу работать. Учитывая предикат, основанный на e.meta_l в вашем первом запросе, LEFT JOINs являются очень неэффективной избыточности и должны быть внутренними соединениями. – symcbean