|
|
|
Достать только первую запись из некоторых групп записей, из остальных достать все
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Целый рабочий день сегодня убил, так и не смог понять, как же это сделать. Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Выдаёт: Мне нужно, чтобы в каждой группе записей, у которой совпадает lesson_date и id_group, а также did_the_lesson_even_happen равен нулю , выводилась только одна строка (любая, в принципе). То есть у вот таких вот групп: Делалось вот так: Записи, у которых флаг did_the_lesson_even_happen равен единице, должны выводиться без изменений, то есть все. С ORDER BY можно делать что угодно, он мне не принципиален. Я его таким выставил для более удобной демонстрации задачи. Я пытался играться с GROUP BY, но эта беспощадная штука группирует и записи с did_the_lesson_even_happen = 1, то есть, например, вот эти две группирует тоже: А она не должна вообще их трогать (did_the_lesson_even_happen = 1). Заранее прошу прощения за безумные paint-скиллы, надеюсь, достаточно понятно всё объяснил и нарисовал. Буду очень благодарен любой помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 18:46:29 |
|
||
|
Достать только первую запись из некоторых групп записей, из остальных достать все
|
|||
|---|---|---|---|
|
#18+
Union двух подзапросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 23:57:43 |
|
||
|
Достать только первую запись из некоторых групп записей, из остальных достать все
|
|||
|---|---|---|---|
|
#18+
Можно и юнион, но тогда СУБД выполнит двойную работу, я-то хотел, наоборот, снизить вычислительную сложность. Спасибо за ответ, у нас тут работа по этой штуке, похоже, сейчас будет приостановлена, так что задачу можно не решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 09:23:07 |
|
||
|
Достать только первую запись из некоторых групп записей, из остальных достать все
|
|||
|---|---|---|---|
|
#18+
SkirmyСУБД выполнит двойную работу, я-то хотел, наоборот, снизить вычислительную сложность. Насчёт двойной - сильно вряд ли. Насчёт снизить - а вот ТЕБЕ оно зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 09:26:28 |
|
||
|
Достать только первую запись из некоторых групп записей, из остальных достать все
|
|||
|---|---|---|---|
|
#18+
SkirmyМожно и юнион, но тогда СУБД выполнит двойную работу, я-то хотел, наоборот, снизить вычислительную сложность. Спасибо за ответ, у нас тут работа по этой штуке, похоже, сейчас будет приостановлена, так что задачу можно не решать. не понял, если у тебя задача двойная то как можно не делая двойной работы её решить. у тебя, выбрать, делать, если 0/1 - цепочка действий 1 / цепочка действий 2 либо юнион как сказали, либо через переменные. тоесть делаешь выборку всех и сортируя, а потом переменными отфильтруешь. но сдаёться мне , для субд проще будет через юнион, чем всю эту муть сортировать, и потом отфильтровывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 10:29:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38896692&tid=1833494]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 318ms |

| 0 / 0 |
