У меня есть таблица, в которой хранится информация о работе со студентом. Мне нужно выбрать часы на основе идентификатора studentID и идентификатора квартала. Вот что у меня есть:Как я могу сделать несколько операторов выбора в одной таблице?
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 генерируется в цикле в то время, так что я буду использовать часы на этом студент, прежде чем я перейду к следующему. Я получаю все часы для одного ученика в каждом квартале, добавляя их (это нужно делать за пределами sql), сохраняя результаты в переменной, а затем переходя к следующему ученику. Это работает отлично, когда я получаю 1 квартал, но у меня проблема, связанная со всеми кварталами.
EDIT Round 2: ли это в довольно ленивым, как я полагаю:
Я только что выбрали все часы и quarterID для конкретного студента. Затем пробежал некоторое время (odbc_fetch_row()). Если бы это был 201101, я добавил его в кучу $ q1, 201102 добавил в кучу $ q2 и так далее. Обработка немного медленнее, но не большая проблема с тем, что я делаю.
Можете ли вы привести пример данных, что вы ожидаете вернуть и что возвращается? – Robb 2010-12-08 20:23:54
На некоторых учениках я получаю часы на некоторых учеников, которых нет. В принципе, он должен вернуть часы, в которые студент вложил. Затем я использую данные, которые возвращены. – dcp3450 2010-12-08 20:28:36