Как объединить эти два оператора запроса в один оператор запроса - PullRequest
1 голос
/ 17 октября 2011
  1.  SELECT *  FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1'
  2.  select max(`receiptNo`)as `receiptNo` FROM instalmentsdetails 

Таблица instalmentsdetails

instalmentsDetailsId
studentFeeId
receiptNo
instalmentName
amount
dueDate
fineAmt
waivedAmt
scholarShip
grandTotal
status

Немного смущен. Как объединить эти два оператора запроса в один оператор запроса

PS: Один оператор проверяет наличиеусловие и другие проверки для максимума получения нет в этой таблице я хочу, чтобы оба значения в одном запросе

Ответы [ 3 ]

4 голосов
/ 17 октября 2011

Это то, что вы хотите?

SELECT max(`receiptNo`) as `receiptNo`  
FROM instalmentsdetails 
WHERE instalmentName='Third Installment' AND studentFeeId='1'

Обновление: как на счет этого:

SELECT * 
FROM instalmentsdetails as inds
INNER JOIN (
    SELECT max(`receiptNo`) as `maxreceiptNo` 
    FROM instalmentsdetails
) as maxt
WHERE inds.instalmentName='Third Installment' AND inds.studentFeeId='1'

Это применяет фильтр к таблице, затем добавляет дополнительный столбец (максимум receiptNo)

2 голосов
/ 17 октября 2011

Предполагая, что цель состоит в том, чтобы получить:

  1. список instalmentsdetails с определенными instalmentName и studentFeeId
  2. глобальный максимум

SELECT *, 0 AS receiptNo FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1' 
UNION
select *, max(`receiptNo`) as `receiptNo` FROM instalmentsdetails

Обновление

Очевидно, ОП просто хочет объединить отдельные результаты запроса в одну строку. В этом случае:

SELECT 
   *,
   (SELECT max(`receiptNo`) FROM instalmentsdetails) AS maxReceiptNo 
FROM instalmentsdetails WHERE instalmentName='Third Installment'AND studentFeeId='1' 
0 голосов
/ 17 октября 2011

Из всего прочитанного Мэтт прав, но, возможно, я могу помочь объяснить, что он делает ...

Первая часть запроса (From InstalmentsDetails WHERE YourCondition) получит все записи, которые соответствуют критериямусловие.

THEN, при выполнении СОЕДИНЕНИЯ ко второму запросу (выберите max ('receiveNo') из ... без условия where) ВСЕГДА вернет одну строку, один столбец максимального поступления без учетаЛЮБЫМ критериям.

Это создает подразумеваемый декартовый результат.Соедините все в первой таблице с каждой записью во второй.Поскольку явного условия соединения нет, каждая строка получит то же значение «max ()», что и возвращаемый столбец.А поскольку в вызове select max () будет только одна запись, вам никогда не придется беспокоиться о дубликатах.

Теперь, если вы хотите получить максимальную квитанцию ​​в рамках тех же критериев, вы просто скопируете эти же критерии ввыберите максимальную () часть запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...