У меня есть таблица, в которой хранится информация о работе ученика. Мне нужно выбрать часы на основе идентификатора студента и квартала. Вот что у меня есть:
SELECT
(SELECT hours FROM clinicalStudents WHERE quarterID='201101' and studentID='$studentID') as q1,
(SELECT hours FROM clinicalStudents WHERE quarterID='201102' and studentID='$studentID') as q2,
(SELECT hours FROM clinicalStudents WHERE quarterID='201103' and studentID='$studentID') as q3,
(SELECT hours FROM clinicalStudents WHERE quarterID='201104' and studentID='$studentID') as q4
Это только дает мне некоторые цифры, но не все из них. Я запустил это (без предложения WHERE) в диспетчере сервера и получил ошибку:
"Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется как выражение"
Любая помощь будет великолепна. Спасибо!
EDIT:
$ studentID генерируется в цикле while, поэтому я использую часы для этого студента, прежде чем перейти к следующему. Я получаю все часы для одного студента в каждом квартале, добавляя их (это должно быть сделано за пределами SQL), сохраняя результаты в переменной, а затем переходя к следующему студенту. Это прекрасно работает, когда я получаю 1 квартал, но у меня проблема с получением всех четвертей.
РЕДАКТИРОВАТЬ Раунд 2:
Я сделал это довольно лениво, я полагаю:
Я просто выбрал все часы и квартальные идентификаторы для конкретного студента. Затем побежал некоторое время (odbc_fetch_row ()). Если это был 201101, я добавил его в стопку $ q1, 201102 добавил в стопку $ q2 и так далее. Обработка немного медленнее, но не является большой проблемой с тем, что я делаю.