MySQL, где условие, но не ограничено этим - PullRequest
1 голос
/ 05 мая 2010

Я бы хотел выполнить запрос к моей базе данных следующим образом:

SELECT SUM( t1.value ) AS total1, SUM( t2.value ) AS total2, SUM( t3.value ) AS total3, SUM( t4.value ) AS total4
FROM pay1 t1, pay2 t2, pay3 t3, pay4 t4
WHERE t1.date = '2010-04-29'
AND t2.date = '2010-04-29'
AND t3.date = '2010-04-29'
AND t4.date = '2010-04-29'

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

Идеальным операндом для меня был бы «АНДОР», чтобы он не был ограничен ни одной датой, не включенной ни в одну таблицу К сожалению, ANDOR не существует, так как я в курсе, что мне делать?

Кто-нибудь может помочь? Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 мая 2010

Вы хотите

SELECT
  (SELECT SUM( value ) FROM t1 WHERE date = '2010-04-29') AS total1,
  (SELECT SUM( value ) FROM t2 WHERE date = '2010-04-29') AS total2,
  (SELECT SUM( value ) FROM t3 WHERE date = '2010-04-29') AS total3,
  (SELECT SUM( value ) FROM t4 WHERE date = '2010-04-29') AS total4
0 голосов
/ 05 мая 2010

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

Внешнее соединение не требует каждого записать в две соединенные таблицы иметь соответствующую запись. Присоединился таблица сохраняет каждую запись - даже если нет другая соответствующая запись существует. внешний объединяет подразделение дальше в левое внешние соединения, правые внешние соединения и полные внешние соединения, в зависимости от которых таблица (ы) один сохраняет строки из (слева, справа или оба).

Википедия

...