| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > объединить 2 запроса в 1 через JOIN + WHERE |
| Автор: JEEN 27.7.2010, 13:32 | ||
смысл такой, есть таблица специальностей и групп. Может быть несколько групп с одной специальностью. Удалить специальность можно только в том случае если нет групп с этой специальностью. specialty sp_id | sp_name groups gr_id | gr_name | gr_specialty |
| Автор: letsgo 27.7.2010, 13:40 |
| SELECT t1.sp_id, t1.sp_name, count(t2.gr_id) as count FROM t1 LEFT JOIN t2 ON t2.gr_specialty = t1.sp_id GROUP BY t1.sp_id Дальше включаете while/ if ($row['count'] == 0) { ... } |
| Автор: JEEN 27.7.2010, 13:51 | ||||||||
| Спасибо! столкнулся еще с одной проблемой.. student id | name | group_id ++++++++++++++++++ 1 | Женя | 12 2 | Ваня | 10 3 | Миша | 12 group id | name | specialty_id ++++++++++++++++++++ 10 | 323гр. | 1 11 | 434гр. | 2 12 | 232гр. | 2 specialty id | name +++++++++ 1 | Информатика 2 | Математика ------------------------------ я пытаюсь сделать выборку, т.е. выбираю нужную мне специальность, скрипт выводит студентов которые учатся на этой специальности, но как видите в таблице студентов есть только поле с id группы. Пример: через форму получаю id специальности (например 2), узнаю у этой специальности группы (в данном случае группы с id 11 и 12) и ищу студентов которые учатся в этой группе (Женя и Миша). как это можно сделать? вот так вроде работает...
Вариант 1: не правильно считает $row_count, в данном случае считает количество групп, удовлетворяющих условию, а не студентов
Вариант 2: Так считает сколько всего студентов, и не обращает внимания на условие...
Вариант 3: Выводит ошибку Unknown column 'groups.gr_specialty' in 'on clause'
все 3 варианта содержат ошибку... |
| Автор: ZneP 1.8.2010, 22:03 |
| Выборка студентов, названия групп и названия специальностей по id специальности: SELECT st.name, g.name, sp.name FROM students st LEFT JOIN group g ON g.group_id = st.group_id LEFT JOIN specialty sp ON sp.id = g.specialty_id WHERE sp.id = {$specialty} GROUP BY st.name, g.name, sp.name |