Как сделать SELECT SUM (a) ОТ b WHERE c = (запрос с несколькими результатами) - PullRequest
0 голосов
/ 10 декабря 2018

Например, как я могу правильно написать это:

SUM(qty) FROM paid WHERE idDoc=(SELECT id FROM doc WHERE this=that)

, когда я уверен, что второй запрос (SELECT id FROM doc WHERE this = that) дает БОЛЬШЕ, чем один результат.

Я могу использовать любой язык более высокого уровня «сверху» для его обхода (сейчас я использую его в Delphi и в PHP), но мне было интересно, можно ли это сделать с помощью одного запроса MySQL (не процедуры,просто запрос).

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

Пока я просто буду использовать вложенныйцикл вокруг первого запроса, но выполнение его внутри MySQL, несомненно, будет быстрее и проще для чтения.

Спасибо

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Чтобы проверить массив значений условий, вы должны использовать предложение IN, например:

SELECT SUM(qty)
FROM paid
WHERE idDoc IN (SELECT id FROM doc WHERE this=that)
0 голосов
/ 10 декабря 2018

Похоже, вы могли бы просто использовать ВНУТРЕННЕЕ СОЕДИНЕНИЕ для этого:

SELECT SUM(qty) 
FROM paid 
INNER JOIN doc ON paid.idDoc = doc.id
WHERE this = that
0 голосов
/ 10 декабря 2018

Используйте IN вместо =, если я правильно понимаю

SELECT SUM(qty) FROM paid WHERE idDoc IN (SELECT id FROM doc WHERE this=that)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...