Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом (Сложное условие) 
:(
    Опции темы
Satellence
Дата 4.5.2012, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Суть:
2 таблицы

tasks (`id`, `title` ...)
task_answer (`id`, `task_id`, `text`...)

Делаю запрос, выводящий одновременно все задачи и количество ответов на него
Код

SELECT `tasks`.`id`,`tasks`.`title`, COUNT(`task_answer`.`id`) AS 'count'
FROM `tasks`
LEFT OUTER JOIN `task_answer`
  ON (`tasks`.`id` = `task_answer`.`task_id`) 
 
GROUP BY `task_answer`.`task_id`


Выводит только задачи, на которые есть ответы. Т.е. не выводит задачи без ответов. 

Это сообщение отредактировал(а) Satellence - 4.5.2012, 03:41
PM MAIL   Вверх
Akina
Дата 4.5.2012, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Код

GROUP BY `tasks`.`id`,`tasks`.`title`

?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
igorold
Дата 4.5.2012, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



Достаточно:

Код

GROUP BY `tasks`.`id`



--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Satellence
Дата 4.5.2012, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Да, верно.. Спасибо, я бы и не подумал туда посмотреть )
тут еще вопрос образовался - нужно к этому запросу добавить последний id ответа.
Т.е. 
Код

SELECT `tasks`.`id`,`tasks`.`title`, COUNT(`task_answer`.`id`) AS 'count', `task_answer`.`user_id` AS 'last'
FROM `tasks`
LEFT OUTER JOIN `task_answer`
  ON (`tasks`.`id` = `task_answer`.`task_id`) 
GROUP BY `tasks`.`id`
ORDER BY `tasks`.`create_time` DESC, `task_answer`.`id` DESC


выдает автора самого первого сообщения.. хочется последнего =)
PM MAIL   Вверх
igorold
Дата 4.5.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



Как вариант вставить в select:
Код


max(`task_answer`.`id`)



--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Satellence
Дата 4.5.2012, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Нет результата.
id ответа действительно выводит последний, но user_id первый.
PM MAIL   Вверх
igorold
Дата 4.5.2012, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



... конечно, вы же сами захотели последний id ответа ...  smile 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Satellence
Дата 4.5.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



Это оговорка ) нужен id пользователя, который оставил последний ответ. 
В запросе, собственно, я и пытаюсь взять user_id 
PM MAIL   Вверх
Akina
Дата 4.5.2012, 14:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(igorold @  4.5.2012,  12:30 Найти цитируемый пост)
Достаточно:

Только при условии, что id - уникальный.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
igorold
Дата 4.5.2012, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 5
Всего: 17



Попробуйте что-то типа этого:

S
Код

SELECT *, count(ta) AS count FROM (

SELECT `tasks`.`id` as tid,`tasks`.`title`, `task_answer`.`id` as ta, `task_answer`.`user_id` AS 'last'
FROM `tasks`
LEFT OUTER JOIN `task_answer`
  ON (`tasks`.`id` = `task_answer`.`task_id`)
  ORDER BY `tasks`.`create_time` DESC, `task_answer`.`id` DESC

) as tmp group by tid;



Добавлено через 2 минуты и 4 секунды
Цитата(Akina @ 4.5.2012,  14:09)
Цитата(igorold @  4.5.2012,  12:30 Найти цитируемый пост)
Достаточно:

Только при условии, что id - уникальный.

Конечно, в данном случае, я считал, что это подразумевается ... 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Zloxa
Дата 5.5.2012, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Akina @ 4.5.2012,  15:09)
Цитата(igorold @  4.5.2012,  12:30 Найти цитируемый пост)
Достаточно:

Только при условии, что id - уникальный.

Так же при условии, что это будет испльзовано ТОЛЬКО на MySQL  smile

Добавлено через 2 минуты
Цитата(Satellence @  4.5.2012,  13:36 Найти цитируемый пост)
нужен id пользователя, который оставил последний ответ. 

stff Бабушкин метод


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 5.5.2012, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Zloxa @  5.5.2012,  09:36 Найти цитируемый пост)
при условии, что это будет испльзовано ТОЛЬКО на MySQL  

Ну на это можно надеяться, исходя из того, в каком разделе размещается вопрос... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 5.5.2012, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(Akina @ 5.5.2012,  09:44)
Цитата(Zloxa @  5.5.2012,  09:36 Найти цитируемый пост)
при условии, что это будет испльзовано ТОЛЬКО на MySQL  

Ну на это можно надеяться, исходя из того, в каком разделе размещается вопрос...

Надеяться на это можно ровно с тем же успехом, как и надеяться на униакальность поля, названного ID.  smile 



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Satellence
Дата 5.5.2012, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 28.3.2007

Репутация: нет
Всего: нет



id уникален, иначе это был бы не id ;)
Спасибо большое, все работает =)
Впрочем, хочется еще одну фишку в запрос прикрутить, но я снова сначала самостоятельно попробую.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1051 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.