powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка записей из категорий
7 сообщений из 7, страница 1 из 1
Выборка записей из категорий
    #39179973
Xploder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, есть таблица новостей (news) - id | name, далее есть таблица категорий (cat) - id | name тоже все стандартно, ну и таблица связей (catnews) - id | news | cat. Вроде все просто и понятно. Но при выборке случился затык:
Код: sql
1.
SELECT news.* FROM news LEFT JOIN catnews ON catnews.news = news.id WHERE catnews.cat = 1 AND catnews.cat = 2 GROUP BY news.id ORDER BY news.id DESC 


то есть выбрать новости которые в ходят в две категории 1 и 2, если указываю по одиночке работает, все вместе нет. Понимаю что ошибаюсь с реализацией, но как исправить, пока мысли не приходят. Подскажите как это дело исправить, спасибо!
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39179995
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Xploderвыбрать новости которые в ходят в две категории 1 и 2, если указываю по одиночке работает, все вместе нетПотому что условия проверяются для ОДНОЙ записи, а не для нескольких.

Xploderкак это дело исправитьДва подзапроса, для каждой категории. И оставить записи, присутствующие в обеих выборках.

PS. За каким хреном используешь ЛЕВОЕ связывание?
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39180000
Xploder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, отлично, а можно пример вашей реализации?
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39182006
Xploder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пока в голову приходит только один вариант получения всех айди в подзапросе, без связывания в обще, это правильно с точки зрения нормализации?
Код: sql
1.
2.
3.
4.
5.
6.
SELECT 
   news.*
FROM 
   news
WHERE 
   news.id IN(SELECT catnews.news FROM catnews WHERE catnews.cat IN (1,2) GROUP BY catnews.news)
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39182050
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Xploder, каким боком нормализация к запросам?
но в принципе правильно, только
1) если версия ниже 5.6, заменить ИН на ДЖОЙН
2) забыли хэвинг в подзапросе
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39182092
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Xploder , если задача статическая, то решается тривиальным
Код: sql
1.
2.
3.
4.
select t1.news_id 
from table t1, table t2
where t1.news_id = t2.news_id
and t1.cat = 1 and t2.cat = 2


Если динамическая, то
Код: sql
1.
2.
3.
4.
5.
select table.news_id 
from table 
where table.cat in ({cat list})
group by table.news_id
having count([distinct] cat) = {cat_list_count}
...
Рейтинг: 0 / 0
Выборка записей из категорий
    #39183084
Xploder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка записей из категорий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]