Tytuł może nie wydawać się bardzo jasny - nie był pewien, jak wyjaśnić problem w jednym wierszu.Zapytanie SQL - wybieranie rekordów na podstawie stanu liczenia
mam 3 tabele
TOPIC VIDEO TOPIC_VIDEO
Temat może mieć jeden lub dwa filmy. Filmy są albo przykładowymi filmami, albo nie.
Przykładowe dane w tabelach z odpowiednimi nazwami kolumn
TOPIC
TOPIC_ID | NAME | COURSE_ID 1 | Excel - Add/Subtract | 1 2 | Excel - sort | 1 3 | Excel - filter | 1 4 | Excel - formulas | 1 VIDEO VIDEO_ID | VIDEO_URL 10 | www.youtube.com?v=123 12 | www.youtube.com?v=345 13 | www.youtube.com?v=567 14 | www.youtube.com?v=879 15 | www.youtube.com?v=443 TOPIC_VIDEO TOPIC_VIDEO_ID | TOPIC_ID | VIDEO_ID | IS_SAMPLE 1 | 1 | 10 | Y 2 | 2 | 12 | N 3 | 3 | 13 | N 4 | 3 | 14 | Y 5 | 4 | 15 | N
Więc co próbuję zrobić, to na dany kurs wybrać wszystkie tematy i odpowiadające im filmy. Teraz, jeśli temat ma więcej niż jedno wideo - chcę wybrać wideo z is_sample jako "N".
Podobnie jak w powyższym przykładzie - id tematu 3 ma dwa filmy z wideo id 13 i 14 - więc video_id 13 powinien zostać wybrany.
To zapytanie mam tak daleko
select topic.*,count(topic.topic_id),video.video_id,topic_video.is_sample from topic left join topic_video ON topic_video.topic_id = topic.topic_id left join video ON video.video_id = topic_video.video_id where course_id=1 group by topic.topic_id
Więc teraz, jeśli liczba wynosi 2 - Chcę, aby wybrać rekord z is_sample = „N” Czy jest to możliwe iw jaki sposób można to osiągnąć. dziękuję za poświęcony czas
są wielorakie 'SELECT' wyciągi w jednym zapytaniu do przyjęcia? –
może to skutkować znacznym spadkiem wydajności – Gublooo