SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.12.2011 18:31:33

Doxtor
Завсегдатай
Зарегистрирован: 06.08.2009
Сообщений: 61

Помогите с GROUP, ORDER

Совсем замучался, второй день пошёл! Помогите пожалуйста.

Возвращает все fakt.name

SELECT
fakt.id,
fakt.name
FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
WHERE fakt.cat = '$categorie'  
GROUP BY fakt.id
ORDER BY SUM(fakt_cnt.cnt) DESC
 


А это возвращает только fakt.name принадлежащие к fakt_cnt.node_id

SELECT
fakt.id,
fakt.name
FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
WHERE fakt_cnt.node_id='$id'
AND fakt.cat = '$categorie'  
GROUP BY fakt_cnt.fakt_id
ORDER BY SUM(fakt_cnt.cnt) DESC
 

А необходимо, что-бы возвращал все, но отсортировал сначала fakt.name принадлежащие к fakt_cnt.node_id, а потом все остальные.


Пытался делать два запроса. Вот второй(почему-то не работает):

SELECT
fakt.id,
fakt.name
FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
WHERE fakt_cnt.node_id <> '$id'
AND fakt.cat = '$categorie'  
GROUP BY fakt_cnt.fakt_id
ORDER BY SUM(fakt_cnt.cnt) DESC
 


Спасибо.

Отредактированно Doxtor (07.12.2011 18:58:03)

Неактивен

 

#2 07.12.2011 22:06:38

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Помогите с GROUP, ORDER

Пытался делать два запроса. Вот второй(почему-то не работает):

А что именно не работает ? Какая ошибка ?

Можно в один запрос объединить:

SELECT
fakt.id,
fakt.name
FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
WHERE fakt_cnt.node_id='$id'
AND fakt.cat = '$categorie'  
GROUP BY fakt_cnt.fakt_id
ORDER BY SUM(fakt_cnt.cnt) DESC
union all
SELECT
fakt.id,
fakt.name
FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
WHERE fakt_cnt.node_id!='$id'
AND fakt.cat = '$categorie'  
GROUP BY fakt_cnt.fakt_id
ORDER BY SUM(fakt_cnt.cnt) DESC
 

Неактивен

 

#3 08.12.2011 14:24:29

Doxtor
Завсегдатай
Зарегистрирован: 06.08.2009
Сообщений: 61

Re: Помогите с GROUP, ORDER

"Не работает" это я конечно погорячился. Просте не точно определил, что мне нужно от запроса.

А нужно что-бы второй запрос "WHERE fakt_cnt.node_id!='$id'" не выбирал fakt.name, которые соответствуют первому запросу.
А сейчас получается, что все строки из запрса 1, повторяются в запросе 2

т.е. второй запрос должен быть с таким условием:

WHERE fakt_cnt.node_id!='$id' AND fakt.id!=(fakt.id из запроса 1)

Отредактированно Doxtor (08.12.2011 14:31:54)

Неактивен

 

#4 09.12.2011 17:41:42

Doxtor
Завсегдатай
Зарегистрирован: 06.08.2009
Сообщений: 61

Re: Помогите с GROUP, ORDER

Никак нельзя?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson