Вам просто нужно установить для вашего свойства ListView
fadeEdge
значение none в вашем XML-файле макета, и вы не получите синюю тень на OVERSCROLL.
android:fadingEdge="none"
EDIT:
это теперь устарело, вы можете использовать android:overScrollMode="never"
.
Подумайте: group by
и having
. Что еще более важно, подумайте JOIN
, JOIN
, JOIN
. Никогда не используйте запятые в предложении from
.
SELECT p.firstName, p.lastName
FROM Professor p JOIN
Group g
ON g.professorCode = p.professorCode
WHERE (g.sessionCode, g.sigle) IN ( (32003, 'INF1130'), (32003, 'INF1110'),
(12004, 'INF3180'), (12004, 'INF2110')
)
GROUP BY p.firstName, p.lastName
HAVING COUNT(DISTINCT g.sigl) = 4; -- has all four
использовать современное соединение
SELECT Professor.firstName, Professor.lastName
FROM Professor join "Group" g on
g.professorCode = Professor.professorCode
where g.sessionCode in( 32003,12004 )
AND g.sigle in( 'INF1130', 'INF1110','INF3180','INF2110')
group by Professor.firstName, Professor.lastName
having count( distinct sigle )=4
Похоже, вы хотите перечислить любого профессора, который или преподавал 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 Предположим, вы изменили свои настоящие имена - может быть, с другого языка?)