Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу написать запрос на SQL к MySQL

5.5K
22 июня 2007 года
Boom.Olezka
69 / / 12.09.2006
Есть таблицы articles, categories, topics, articles_attachs.

articles_attachs - id_article (ид статьи), id (ид категории или топика(темы статьи)), id_attach (1 или 2, определяет чей ID соответсвенно)

Пишу запрос

 
Код:
SELECT a.id_article as id_article, a.title as title, a.pubdate as pubdate
FROM articles as a, articles_attachs as aa
WHERE a.id_article=aa.id_article AND (aa.id_attach=1 AND aa.id IN ('119')) AND (aa.id_attach=2 AND a.id_article=aa.id_article AND aa.id IN ('10')) GROUP BY a.id_article


Хочу выбрать статьи из определённой категории с определённой темой (топиком). Ошибку запрос не возращает, но ничего не даёт... Если вместо AND пишу OR тогда он показывает все статьи по категориям не учитываю тема и наоборот...

Нид хелп :mad:

Забыл сказать... кажой новости может быть привязано несколько категорий и тем
10
22 июня 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Boom.Olezka
Ошибку запрос не возращает, но ничего не даёт...


Всё верно. Сравнение с константой в where производится для каждой строки, соответственно твоё "высказывание" означает: "когда aa.id_attach=1 и aa.id_attach=2". Логика ясна? Хороший оптимизатор вообще не будет делать выборку, всегда выдавая пустой курсор.

Сравнения, работа которых предполагается для разных строк, нужно записать в скобках через OR. Для AND скобки излишни.

5.5K
22 июня 2007 года
Boom.Olezka
69 / / 12.09.2006
С OR bи скобками вроде стало понятно...

Убрал скобки из запроса, но всё равно он отказывается выдавать результат... Как ещё можно сформировать запрос?
271
22 июня 2007 года
MrXaK
721 / / 31.12.2002
а если так:
 
Код:
SELECT a.id_article as id_article, a.title as title, a.pubdate as pubdate  
FROM articles as a, articles_attachs as aa INNER JOIN ON (a.id_article=aa.id_article) WHERE (aa.id_attach=1 AND aa.id IN ('119')) OR (aa.id_attach=2 AND aa.id IN ('10'))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог