W języku SQL istnieje operator DISTINCT. Mam jednak zadanie, w którym potrzebuję uzyskać różne wartości z tabeli i mogę używać tylko algebry relacyjnej. Czy istnieje sposób?Wybieranie wierszy DISTINCT w algebrze relacyjnej
Odpowiedz
Relacyjne rzuty zawsze zwracają różne krotki, więc DISTINCT nigdy nie jest potrzebny. Zduplikowane krotki są niedozwolone w RA - jako jedna zasadnicza różnica między modelem relacyjnym a modelem SQL.
Wiem, że jest to stare pytanie, ale muszę się sprzeciwić, w algebrze relacyjnej jest coś podobnego do operatora, w moim wydaniu Ullmans Database Systems The Complete Book znajduje się w następującym rozdziale: ,, 5.2.1 Duplicate Elimination ". Tak, jasne, duplikaty są niedozwolone w normalnych zestawach, ale są multisety, które im pozwalają –
Witaj DDavid, myślę, że być może brakuje ci punktu, który zrobił Molina, Ullman, Widom (świetna książka przy okazji i jedna często patrz punkt 5.2): "Kiedy najpierw opracowano DBMS, który korzystał z modelu relacyjnego, ich języki zapytań w dużej mierze zaimplementowały relacyjną algebrę. Jednak ... systemy te postrzegały relacje jako * worki *, a nie zestawy. "(Podkreślam) Podkreślają, że operacje worków różnią się od operacji zestawu obsługiwanych przez RA." DISTINCT "SQL" bierze "krotką torbę i eliminuje duplikaty, RA zajmuje się wyłącznie zestawami krotek. – sqlvogel
Relacyjna algebra opiera się na teorii mnogości. SQL jest implementacją teorii wielu zbiorów. Zestaw zawsze ma różne elementy. Więc krotki są domyślnie odrębne w relacyjnej algebrze.
- 1. Wybieranie losowych wierszy w MySQL
- 2. Wybieranie wielu wierszy JTable
- 3. Zapytanie SQL Server - wybieranie COUNT (*) z DISTINCT
- 4. gdzie mogę znaleźć dobry przykład/wyjaśnienie dotyczące operacji podziału w algebrze relacyjnej?
- 5. Wybieranie losowych wierszy z MySQL
- 6. Wybieranie wierszy w wielowierszowej ramce danych
- 7. Wybieranie jednego wiersza ze zduplikowanych wierszy
- 8. Wykreślanie wykresu on_click Wybieranie wierszy daty w pythonu bokeh 2.7
- 9. Wybieranie i grupowanie wierszy w podsumowaniu przez godzinę
- 10. MySQL: wybieranie wierszy, w których kolumna jest pusta
- 11. DISTINCT ON w Django
- 12. Jak uzyskać różne wartości za pomocą alfa/arel/relacyjnej
- 13. Oracle odpowiednik DISTINCT Postgres?
- 14. USUŃ rekord w pozycji relacyjnej w MySQL?
- 15. postgresql COUNT (DISTINCT ...) bardzo powolny
- 16. Przechowywanie obiektów R w relacyjnej bazie danych
- 17. SELECT DISTINCT i ORDER BY w MySQL
- 18. Opróżnij schemat relacyjnej bazy danych
- 19. Korzystanie z DISTINCT w JPA
- 20. Wybieranie liczby kolejnych rekordów
- 21. Wybieranie i aktualizowanie w jednej przechowywanej procedurze
- 22. Wybieranie określonego numeru wiersza w sql
- 23. Czy mogę używać jednocześnie COUNT() i DISTINCT?
- 24. Wybierz jedną kolumnę DISTINCT SQL
- 25. COUNT DISTINCT z warunkami
- 26. MYSQL UNION DISTINCT
- 27. Wybierz Count Distinct
- 28. BigQuery COUNT (wartość DISTINCT) vs COUNT (wartość)
- 29. LINQ: Distinct and Orderby
- 30. EF Distinct (IEqualityComparer) Błąd
Może możesz użyć operatora podziału Rel1 ÷ Rel1! –