Серж Ханко
12 повідомлень
#16 років тому
Есть три таблицы: "Исполнители", "Проекты", "Выполнение".

Таблица "Исполнители" состоит из 5 полей: ID_Исполнитель, Фамилия, Квалификация, Категория, Образование.
Таблица "Проекты" состоит из 5 полей: ID_Проект, Название, Важность, Начало, Длительность.
Таблица "Выполнение" состоит из 4 полей: ID_Проект, ID_Исполнитель, Статус, Часы.


Задача: Составить запрос вывода названий проектов, которые не выполнял ни один исполнитель (то есть никто)
Евгений О.
2989 повідомлень
#16 років тому
Например так
select * from Выполнение left join Проекты on Проекты.ID_Проект = 
Выполнение.ID_Проект where Выполнение.ID_Исполнитель is null or Выполнение.ID_Исполнитель < 1
Серж Ханко
12 повідомлень
#16 років тому
elosoft, Ну вроде понятно, только вместо звёздочки поставлю Название (из табл. Проекты). А вот "ID_Проект.ID_Исполнитель" что означает соединительная точка. Всегда думал, что точка используется для связи полей с таблицами?
Евгений О.
2989 повідомлень
#16 років тому
Лучше перечислить все поля используемые в запросе. автоматом из части where и др. подставляют далеко не все версии mysql'а.
вид Выполнение.ID_Исполнитель - одино из допустимых описаний полей. в общем виде Таблица.ИмяПоля. (сначала там ошибка была)
Серж Ханко
12 повідомлень
#16 років тому
elosoft, понятно. То есть запрос должен быть таким?
select * from Выполнение left join Проекты on Проекты.ID_Проект = Выполнение.ID_Проект where Исполнители.ID_Исполнитель is null or Исполнители.ID_Исполнитель < 1
Евгений О.
2989 повідомлень
#16 років тому
Да
Там есть еще поле "статус". Наверняка можно работать и через него.
Евгений О.
2989 повідомлень
#16 років тому
Извиняюсь. не внимательно посмотрел.
в твоем коде есть ошибка. надо
select * from Выполнение left join Проекты on Проекты.ID_Проект = 
Выполнение.ID_Проект where Выполнение.ID_Исполнитель is null or Выполнение.ID_Исполнитель < 1
Евгений О.
2989 повідомлень
#16 років тому
А вообще деление на таблицы не удачное. на 90% уверен что таблица Выполнение не нужна. достаточно добавить поля в таблицу Проекты и будет результат тот же, а запросы намного проще.
Евгений Б.
5330 повідомлень
#16 років тому
Почему неудобное.. если у нас на одном проекте несколько исполнителей, то очень даже удачное
Серж Ханко
12 повідомлень
#16 років тому
elosoft, Cогласен, но задание было из 3 таблиц.
Серж Ханко
12 повідомлень
#16 років тому
elosoft, А ещё, может знаешь, как сделать выборку последнего ID_Проект из таблицы "Проекты"?
Так верно будет?

select last(ID_Проект) from Проекты


И если это реализовать в php/mysql, то верно будет так?


<?php
$con = mysql_connect("localhost","login","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT last(id_Project) FROM Projects");

$row = mysql_fetch_array($result);

echo $row;

mysql_close($con);
?>