MySQL - Дублированное имя столбца Ошибка при подсчете результатов запроса с объединениями - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь подсчитать количество результатов, генерируемых каждым запросом, который запускается в приложении, которое мы создаем, эти запросы являются динамическими c и генерируются приложением, поэтому мы не можем контролировать синтаксис.

Эти запросы иногда оказываются очень тяжелыми, и нам нужно добавить ограничения перед их выполнением, но перед добавлением этих ограничений нам нужно знать окончательный счет.

Нам очень понравился способ получения количества строк каждого запроса без необходимости выполнения результатов:

Select count(*) from ($query) as q_count;

Где $query - любой заданный динамический c запрос, сгенерированный приложением. Это прекрасно работает до тех пор, пока запрос не содержит соединение, а в двух таблицах соединения есть столбец с одинаковым именем.

Например, давайте представим таблицу CLIENTS с CLID (идентификатор клиента) и таблицу Invoices также с CLID (в качестве внешнего ключа)

Следующий запрос возвращает все номера счетов и имена клиентов:

SELECT * FROM CLIENTS LEFT JOIN INVOICES on CLIENTS.CLID = INVOICES.CLID

Но в тот момент, когда я пытаюсь их подсчитать, используя Select count(*) from ($query) as q_count, где $query это запрос выше, я получаю следующую ошибку:

select count(*) from (SELECT * FROM CLIENTS LEFT JOIN INVOICES on CLIENTS.CLID = INVOICES.CLID) as q_count 

Ошибка:

Дубликат имени столбца 'CLID'

Я понимаю, почему это в приведенном выше примере я предполагаю, что CLID становится неоднозначным, и count (*) не может различить оба, мой вопрос о решении или способе его обойти, помните, что у меня нет контроля над запросами ( $query)

Должен быть способ, потому что phpMyAdmin способен вычислять количество результатов без извлечения всех данных независимо от запроса.

Есть мысли?

...