[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с запросом из 4 таблиц
BlackGhost
Есть таблица uspehi, содержащая поля id, PredmetId, StudId, PrepodId.
Существуют также таблицы predmets, students, prepods, из которых и должны выбираться в запросе значения.

Страница открывается по ссылке, в которую передается переменная student_id методом GET.

Необходимо, чтобы в таблице успехи нашлась запись с id равным $_GET['student_id'], вместо остальных 3-х полей (PredmetId, StudId, PrepodId) были добавлены поля из 3-х таблиц (predmets, students, prepods) по их id

Вот запрос, но он не работает....

$query_Uspehi = "SELECT * FROM uspehi WHERE StudId=".$_GET['student_id'].",
predmets WHERE uspehi.PredmetId=predmets.id,
students WHERE uspehi.StudId=students.id,
prepods WHERE uspehi.PrepodId=prepods.id"
;



На всякий случай напишу остальные строчки:
mysql_select_db($database_students_BD, $students_BD) or die(mysql_error());
$Uspehi = mysql_query($query_Uspehi, $students_BD) or die(mysql_error());
$row_Uspehi=mysql_fetch_assoc($Uspehi);
$totalrow_Uspehi = mysql_num_rows($Uspehi); // Количество строк в таблице



Спасибо!


inpost
Синтаксис WHERE неверный. Зайди в гугл и посмотри smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
BlackGhost
Просто запрос больно сложный...
rooor
$query_Uspehi = "SELECT U.* FROM `uspehi` U 
LEFT JOIN `predmets` PS ON PS.`id` = U.`PredmetId`
LEFT JOIN `students` SS ON SS.`id` = U.`StudId`
LEFT JOIN `prepods` PD ON PD.`id` = U.`PrepodId`
WHERE U.`StudId` = "
.(int)$_GET['student_id']);
inpost
Разные таблицы, не досмотрел... сорри.
Выбери JOIN, RIGHT JOIN, LEFT JOIN, UNION в зависимости от конкретной задачи smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
OleKh
Ели без JOIN может так получится, вместо us.* и т.д добавить запрашиваемые поля например,
us.PredmetId, us.StudId или выберутя все поля.

$query_Uspehi = "
SELECT us.* FROM uspehi us, predmets prd, students st, prepods pr
WHERE us.StudId=".$_GET['student_id']."
AND us.PredmetId=prd.id
AND us.StudId=st.id
AND us.PrepodId=pr.id";
BlackGhost
Я не совсем правильно вопрос сформулировал:

Мне надо, чтобы в выборку по StudId добавилась вся запись из таблицы students (в ней 5 полей), по prepodId поле name из таблицы prepods и по predmetId name предмета из таблицы predmets
OleKh
$query_Uspehi = "
SELECT us.*, pr.name, prd.name, st.* FROM uspehi us, predmets prd, students st, prepods pr
WHERE us.StudId=".$_GET['student_id']."
AND us.PredmetId=prd.id
AND us.StudId=st.id
AND us.PrepodId=pr.id";

но не факт, что сразу заработает, пробуйте
rooor
Как сказали выше - читай про JOIN и т.п.
Пример запроса есть, осталось только поиграться с таблицами, чтобы получить нужный результат =)
BlackGhost
Спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.