Odejmowanie zapytań w mysql

0

Chodzi mi o dokładnie coś takiego
-zapytanie pierwsze zwaraca pule wszystkich kategorii zalozmy A,B,C,D
-zapytanie drugie wszystkie kategorie przypisane do ogloszenia np kategoria A

Chcialbym odjac wszystkie kategorie od tej do przypisanej do newsa i osiagnac wynik : wyswietlic kategorie z puli wszystkich oprocz tych przypisanych do newsa

W skrocie:
np.
ABCD - A = BCD
Jesli wiecej kategori
ABCDE - A = BCDE
itd

Glownym problemem tego zapytania jest to ze w MYSQL nie dziala lacznik "MINUS". Jak wiec rozwiklac taka zagadke?

(SELECT sos_categories.categories_id, sos_categories.categories_name FROM sos_categories 
 WHERE sos_categories.categories_active = '1' AND sos_categories.categories_type = 'news')
MINUS
(SELECT sos_categories.categories_id, sos_categories.categories_name
FROM sos_news 
JOIN sos_news_categories 
	ON sos_news.news_id = sos_news_categories.news_id 
JOIN sos_categories 
	ON sos_categories.categories_id = sos_news_categories.categories_id 
WHERE sos_categories.categories_active = '1' AND sos_categories.categories_type = 'news' AND   sos_news.news_id ='1')
0

Za bardzo kombinujesz. Czemu w 1 zapytaniu nie dasz po prostu warunku:

where categoria != 'A'

SQL nie polega na odejmowaniu zbiorów...

0

tylko ze jak news ma przypisane dwie kategorie np A,B?

WHERE categoria != 'A,B'

to takie cos nie zadziala..

0

Dla jednej kategori to dziala:

SELECT sos_categories.categories_id, sos_categories.categories_name FROM sos_categories WHERE sos_categories.categories_active = '1' AND sos_categories.categories_type = 'news' AND sos_categories.categories_name != (SELECT sos_categories.categories_name FROM sos_news JOIN sos_news_categories ON sos_news.news_id = sos_news_categories.news_id JOIN sos_categories ON sos_categories.categories_id = sos_news_categories.categories_id WHERE sos_categories.categories_active = '1' AND sos_categories.categories_type = 'news' AND sos_news.news_id ='1')

Dla wiecej niz jednej jest blad

Subquery returns more than 1 row

1
WHERE categoria not in ('A','B')
0

Tak o to chodzilo. Dzieki!

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