Я играю с этим для того, что кажется часами, и я не могу получить результаты, которые я хочу. Вот запрос, с которым у меня возникают проблемы:Суммирование сумм MySQL по состоянию на год
SELECT year.year, dstate,
(SELECT sum(amount) FROM gift
WHERE year.year = gift.year
AND gift.donorno = donor.donorno)
FROM donor, gift, year
WHERE year.year = gift.year
AND gift.donorno = donor.donorno;
Это кажется излишним. Во всяком случае, я пытаюсь показать общее количество пожертвований (gift.amount) для каждого штата по годам.
ex.
1999 GA 500 (donorno 1 from GA donated 200 and donorno 2 from GA donated 300)
1999 FL 400
2000 GA 600
2000 FL 500
...
Для уточнения доноров могут быть из того же состояния, но я пытаюсь составить дар сумму для этого государства в течение года он пожертвовал. Любые советы приветствуются. Я чувствую, что ответ прямо передо мной.
Вот картина таблиц для справки:
спасибо. Как вы, вероятно, можете сказать, что я новичок в SQL и в настоящее время беру вводный курс. Я не совсем уверен, что вы подразумеваете под «синтаксисом синтаксиса старого стиля». Мне также нужно будет прочитать, как использовать ключевое слово INNER JOIN. Некоторые из моих экспериментов заставили меня использовать GROUP BY, но я не знал, что вы можете использовать его с несколькими столбцами. Очевидно, это была моя проблема. Мне придется больше поработать над этим! – Colin93
Объединения могут быть сделаны путем перечисления таблиц в предложении FROM и разделения их запятыми, а затем указания синтаксиса соединения в предложении WHERE. если вы забудете поставить условия соединения, вы получите декартово произведение (каждая строка каждой таблицы будет соединена с каждой строкой других таблиц, чтобы вы получили '(Таблица1 строк) * (Таблица 2 строки) * (Таблица 3 Строки) '), что, скорее всего, не то, что вы хотите. Используя явный синтаксис JOIN, гораздо легче увидеть, если вы забудете условия для соединения. Знать разницу между соединением INNER, LEFT, RIGHT и CROSS - важный навык. –