Цитата:
Сообщение от niggle
У спортсменки Сысоева, есть несколько разрядов. Полученных в разные даты.
Почему её выводит несколько раз? Не могу догнать и всё
|
Потому что здесь:
Код:
FROM otdel, groupS, kdGroup, trener, sports, data, razrad, kodrazr
у тебя происходит
декартово умножение таблиц (CROSS JOIN), т.е. из 8-ми таблиц ты получаешь одну мегатаблицу в которую включаются все поля (колонки) этих таблиц и все возможные сочетания записей этих таблиц, при этом количество записей этой мегатаблицы будет равно произведению количества записей исходных 8-таблиц. После этого из этой таблицы отсеиваются записи которые не удовлетворяют условиям в WHERE. А где у тебя в WHERE есть условие, что нужно выводить только последние разряды? - Нету - Поэтому эти записи не отсеиваются и выводятся все.
Цитата:
Сообщение от niggle
Как сделать так чтобы запись выводилась только один раз, причем с последним полученным разрядом.
|
Попробуй, например, добавить такое условие:
Код:
AND razrad.Дата_присвоения = (SELECT MAX(razrad2.Дата_присвоения)
FROM razrad AS razrad2
WHERE sports.код_спортсмена = razrad2.код_спортсмена)
Цитата:
Сообщение от niggle
Проблема в Запросе? или в структуре БД?
|
А вообще лучше "CROSS JOIN" не использовать. Намного удобнее и понятнее вместо этого использовать "
LEFT OUTER JOIN".