Похоже, вы хотите перечислить любого профессора, который или преподавал INF1130 и INF1110 в 32003; или преподавал INF3180 и INF2110 в 12004. К сожалению, вы представили это как И (то есть они должны были преподавать все четыре курса - одну пару курсов И другой), а не ИЛИ (один набор курсов ИЛИ другой) [1111 ]
Как многословный способ расширить то, что, я думаю, вы хотите:
SELECT p.firstName, p.lastName
FROM Professor p
WHERE (
EXISTS (
SELECT *
FROM GroupX g
WHERE professorCode = p.professorCode
AND sessionCode = 32003
AND sigle = 'INF1130'
)
AND EXISTS (
SELECT *
FROM GroupX g
WHERE professorCode = p.professorCode
AND sessionCode = 32003
AND sigle = 'INF1110'
)
)
OR (
EXISTS (
SELECT *
FROM GroupX g
WHERE professorCode = p.professorCode
AND sessionCode = 12004
AND sigle = 'INF3180'
)
AND EXISTS (
SELECT *
FROM GroupX g
WHERE professorCode = p.professorCode
AND sessionCode = 12004
AND sigle = 'INF2110'
)
);
Четыре подзапроса не будут ужасно эффективными. Вместо этого вы можете сделать несколько соединений.
Если вы всегда будете искать два sigle
значения для sessionCode
, то вы можете изменить ответ Гордона, чтобы подсчитать, сколько соответствует каждому sigle
, добавив его в предложение group-by:
Если бы у вас был профессор, который преподавал все четыре, то вы бы перечислили их дважды; если это может произойти, вы можете добавить свой DISTINCT
обратно, хотя это немного не так. Вы также можете использовать подзапрос и IN
, чтобы избежать этого:
SELECT p.firstName, p.lastName
FROM Professor p
WHERE ProfessorCode IN (
SELECT professorCode
FROM GroupX
WHERE (sessionCode, sigle) IN ( (32003, 'INF1130'), (32003, 'INF1110'),
(12004, 'INF3180'), (12004, 'INF2110')
)
GROUP BY professorCode, sessionCode
HAVING COUNT(*) = 2
)
(я изменил Group
на GroupX
, потому что это недопустимый идентификатор; потому что это ключевое слово. I Предположим, вы изменили свои настоящие имена - может быть, с другого языка?)
Можно использовать комментарии стиля XML и использовать инструменты для вытаскивания тех комментариев в документацию API.
Вот пример стиля комментария:
/// <summary>
/// Authenticates a user based on a username and password.
/// </summary>
/// <param name="username">The username.</param>
/// <param name="password">The password.</param>
/// <returns>
/// True, if authentication is successful, otherwise False.
/// </returns>
/// <remarks>
/// For use with local systems
/// </remarks>
public override bool Authenticate(string username, string password)
Некоторые объекты для упрощения этого:
GhostDoc, которые дают единственное сочетание клавиш для автоматической генерации комментариев для класса или метода. Замок из песка , который генерирует документацию стиля MSDN из XML-комментариев.
/// <summary>
///
/// </summary>
/// <param name="strFilePath"></param>
Microsoft использует" Комментарии Документации XML ", который даст IDE intellisense описания и также позволит Вам автоматически генерировать документацию стиля MSDN с помощью инструмента, такого как Замок из песка, если Вы включите поколение вывода XML-файла.
Для включения поколения XML-файла для документации щелкните правой кнопкой по проекту в Visual Studio, нажмите "Properties" и перейдите к вкладке "Build". К нижней части можно определить местоположение для выходного файла XML-комментариев.
Предыдущие ответы указывают на синтаксис XML отлично. Я просто хотел добавить свою рекомендацию для свободный (и открытый исходный код) nDoc генератор справочной библиотеки , который анализирует все комментарии в проекте.
Мне всегда говорили использовать комментарии блока, открытые с 2 или больше звездочками, действительно разграничивают комментарии для документации.
/**
Documentation goes here.
(flowerboxes optional)
*/