Duplikat wyników

0

Hej,
Mam mały problem.

Są dwie tabele pierwsza niech będzie taka:
Wydarzenie;
*id
*początek
*koniec
*opis

Druga tabela wygląda tak:
SubWydarzenie:
*id
*idWydarzenie
*początek
*koniec

Chcę zrobić selekta który wyciągnie mi wydarzenia po konkretnej dacie. Tzn niech będzie 2017-06-27 i chcę dostać takie wydarzenia które zawierają się w początku, końcu w tabelce Wydarzenia lub zawierają się w początku/końcu SubWydarzenia.
Haczyk jest taki, ze potrzebuje tylko unikatowych danych z tabeli Wydarzenia.


select Wydarzenie.id, Wydarzenie.poczatek, Wydarzenie.koniec, Wydarzenie.opis from Wydarzenie
inner join SubWydarzenie on Wydarzenie.id = SubWydarzenie.idWydarzenie
where 
(Wydarzenie.początek >= @data and Wydarzenie.koniec <= @data )
OR
(SubWydarzenie.początek >= @data and SubWydarzenie.koniec <= @data )

Pytanie czy muszę jeszcze muszę robić grupowanie po tym co chce dostać z selecta czy może istnieje jakieś sprytne rozwiązanie (MSSQL 2012 i wyżej)?

0

Spróbuj DISTINCT, może pomoże.

0

Dziękuje :)

0

Hmm imho nie pomoże ... bo przecież pobierasz też ID wydarzenia ... a zakładam, że to jest unikalne, więc ... po prawdzie to Twoje zapytanie już powinno być "poprawne" (czyt. dać to co chcesz)

DISTINCT pomogło by jak byś miał np. 2 wpisy ala:

2017-09-09 | 2017-09-10 | Pożar
2017-09-09 | 2017-09-10 | Pożar

Wtedy pokazął by tylko raz ten wpis ... ale jak dodasz ID do tego:

1 | 2017-09-09 | 2017-09-10 | Pożar
2 | 2017-09-09 | 2017-09-10 | Pożar

to jak widać każdy rekord jest unikalny (ma unikalne id).

0

Pewnie byłoby Ci ławteij z inną strukturą bazy. Nie znam założeń ale patrząc po tym co wrzuciłeś to SubWydarzenie to nadal jest Wydarzenie - po co robić na to osobną tabelę ? A gdyby wydarzenie posiadało pole w stylu wydarzenie_id (lub inne podobne) które definiowało by jego rodzica ? Przy okazji umożliwa to definowanie bardziej złozonej struktury.

0
W2K napisał(a):

Pewnie byłoby Ci ławteij z inną strukturą bazy. Nie znam założeń ale patrząc po tym co wrzuciłeś to SubWydarzenie to nadal jest Wydarzenie - po co robić na to osobną tabelę ? A gdyby wydarzenie posiadało pole w stylu wydarzenie_id (lub inne podobne) które definiowało by jego rodzica ? Przy okazji umożliwa to definowanie bardziej złozonej struktury.

Ponieważ wydarzenia mogą mieć kilka różnych dat otwarcia, np.
2017-06-01 - 2017-06-07 <- w wydarzeniu, a sub wydarzenia mogą mieć:
2017-06-05 - 2017-06-13 ,2017-06-10 - 2017-06-11, 2017-06-13 - 2017-06-14, niestety te subwydarzenia są generowane maualnie przez użytkownika i nie można je jakoś z automatu wyciągać.
Niestety struktura bazy danych wygląda w taki sposób i powyższa zmiana nie jest opłacalna biznesowo :'(

Rozwiązanie z DISTINCT w pełni rozwiązuje mój problem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1