Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobranie video z wykluczeniem kategorii
Forum PHP.pl > Forum > Przedszkole
Lirdoner
Witam, na stronie wyświetlam listę ostatnio dodanych materiałów wideo. Z tej listy chcę wyrzucić video z określonych kategorii. Baza wygląda mniej więcej tak

video table:
id | title

categories table:
id | title

video categories table:
video_id | category_id

Moje zapytanie do bazy wygląda tak
  1. SELECT `v`.*
  2. FROM (`video` v)
  3. JOIN `video_categories` c ON `c`.`video_id` = `v`.`id`
  4. WHERE `c`.`category_id` NOT IN (88, 89, 98, 150, 160, 179, 67, 86, 111, 191, 136, 122, 103, 78, 24, 189, 129, 140)
  5. GROUP BY `v`.`id`
  6. ORDER BY `publish_date` DESC
  7. LIMIT 20

Niestety w odpowiedzi dostaje wideo które są przypisane do id w NOT IN. Jak to naprawić?
SmokAnalog
Dostajesz je, bo pewnie są w innych kategoriach spoza czarnej listy. Bez podzapytania się raczej nie obejdzie:
  1. SELECT *
  2. FROM `video`
  3. WHERE `id` NOT IN (
  4. SELECT DISTINCT `video_id`
  5. FROM `video_categories`
  6. WHERE `category_id` IN (
  7. 88,
  8. 89,
  9. 98,
  10. 150,
  11. 160,
  12. 179,
  13. 67,
  14. 86,
  15. 111,
  16. 191,
  17. 136,
  18. 122,
  19. 103,
  20. 78,
  21. 24,
  22. 189,
  23. 129,
  24. 140
  25. )
  26. )
  27. ORDER BY `publish_date` DESC
  28. LIMIT 20
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.