Member 12697758 Ответов: 2

Удаление дубликатов строк из родительской таблицы


У меня есть база данных с отношениями "многие ко многим". Таблицы: курс, учебники, Буккурс.

На одном курсе может быть много книг, на многих курсах может быть одна и та же книга.

Я сделал вложенный gridview, показывающий курс, а затем при расширении курса он показывает каждую книгу, связанную с ним. Но в моем текущем запросе select он отображает повторяющиеся строки в таблице курса для каждой книги. Когда вводится книга, CourseID добавляет еще одну книгу к этому курсу, но прямо сейчас он добавляет дублирующуюся строку в мою родительскую таблицу курсов вместо того, чтобы просто добавить ее в таблицу учебников и отобразить ее под курсом с этим CourseID

https://gyazo.com/d576a7835b1727277ceedf7787d35787

Приведенная выше ссылка показывает, как вид сетки таблицы курса показывает дубликаты. если развернуть, то под повторяющимися строками будет несколько книг.

Что я уже пробовал:

string query = " select DISTINCT * from Course inner join учебники по учебникам.Идентификатор_курса = Конечно.Идентификатор_курса";

Anisuzzaman Sumon

Не лучше ли показать определения этих таблиц, чтобы получить точный ответ?

2 Ответов

Рейтинг:
2

ZurdoDev

Используйте DISTINCT, но не используйте *. Поскольку вы используете * , то возвращаются все поля из всех таблиц, и поэтому DISTINCT, вероятно, не очень помогает. Используйте DISTINCT, но также просто выберите нужные вам поля, а не все. Простой.


Member 12697758

Я должен выбрать все, иначе я получу ошибку, говорящую, что что-то не существует в текущем содержимом из таблицы, где я не выбрал *.

ZurdoDev

Тогда измените это, иначе вы получите дубликаты.

Рейтинг:
1

Foothill

Другим решением было бы попробовать другой подход к дизайну вашего стола. Вместо того чтобы связывать книгу с курсом в таблице книг, лучше иметь таблицу курсов, таблицу книг и таблицу отношений, чтобы определить, какие книги идут на какие курсы. Ваши SQL-операторы должны были бы объединяться через таблицу отношений, что делает первоначальную настройку и кодирование немного более трудными, но делает поддержание ее намного более простым.