
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.07.2015, 00:21:07
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Здравствуйте. Очень нужна ваша помощь. Имеется некий запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В общем данный запрос подсчитывает количество положительных отзывов и количество отрицательных отзывов, первая половина выводит ТОП 3 самых хороших пользователей, а вторая половина выводит ТОП 3 самых плохих. Всё работает как надо, НО выводятся записи друг за другом, т.е. сначала 3 хороших, а потом 3 плохих пользователя. А мне необходимо, чтобы они выводились как бы поочерёдно. Сначала 1-ый самый хороший, потом 1-ый самый плохой, затем 2-ой хороший, потом 2-ой самый плохой и т.д. Как это реализовать в запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:20:59
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:32:12
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkov Код: sql 1. Это в конец запроса дописать? Выводит всё так же как и было, по порядку. Это не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:33:45
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
вместо этого Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:45:27
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovвместо этого Код: sql 1. Это тоже не то. Давайте чуток по-другому переформулирую своё пожелание. Из моего запроса всего выходит 6 строк, т.е таким образом: 1-ая из первого запроса 2-ая из первого запроса 3-ая из первого запроса 4-ая из второго запроса 5-ая из второго запроса 6-ая из второго запроса А мне необходимо, чтобы было так: 1-ая строка из первого запроса 2-ая строка из второго запроса 3-ая строка из первого запроса 4-ая строка из второго запроса 5-ая строка из первого запроса 6-ая строка из второго запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:56:07
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
внатуре протупил.. надо пронумеровать строки обоих запросов с помощью переменных а весь union сделать подзапросом и сортировать по номеру строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:57:48
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovвнатуре протупил.. надо пронумеровать строки обоих запросов с помощью переменных а весь union сделать подзапросом и сортировать по номеру строки да еще добавить сортировку по результатам голосования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 01:59:41
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovвнатуре протупил.. надо пронумеровать строки обоих запросов с помощью переменных а весь union сделать подзапросом и сортировать по номеру строкиДа если честно, то я совсем плохо в запросах разбираюсь. Даже этот запрос я не сам писал. Подскажите, как реализовать ваш совет, точнее как он должен выглядеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 02:07:48
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
про нумерацию строк есть фак здесь же на форуме, фактически здесь два запроса объедененных с помощью union с каждым запросом по отдельности поэспериментируй, пока не получишь нужного а потом Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 02:10:39
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovпро нумерацию строк есть фак здесь же на форуме, фактически здесь два запроса объедененных с помощью union с каждым запросом по отдельности поэспериментируй, пока не получишь нужного а потом Код: sql 1. Благодарю, завтра буду пробовать. Отпишусь о результатах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 12:05:46
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovпро нумерацию строк есть фак здесь же на форуме, фактически здесь два запроса объедененных с помощью union с каждым запросом по отдельности поэспериментируй, пока не получишь нужного а потом Код: sql 1. Сделал нумерацию в каждом запросе, сделал вывод нумерации, но она совершенно непонятная и дальнейшая сортировка по ней не даст никакого результата. Вот такой вывод результата (первый столбец - нумерация, второй - имя юзера, третий - разница между количеством хороших и плохих отзывов): Код: html 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 13:03:14
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
запрос где, что то неправильно сделал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 14:21:31
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Вот запрос с добавленной нумерацией: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Если важно, то нумерацию я также переносил не во вложенный запрос, а в основной (точно не знаю как он правильно называется). Так вот значения меняются, но всё равно примерно также. Также в первой и во второй половине запроса делал одинаковую переменную с именем i - это приводит к чуть большему значению. Короче я запутался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 14:47:43
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Gamletus, group by всю малину портит, left outer join тоже сомнителен, хотя если по принципу лишь бы работало то сверху и пронумеруем подзапросом обернем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. а вообще запрос надо переделывать много записей будет- будет вешать сервак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 14:58:34
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkov , сейчас ваш пример сделал и вывод теперь такой: Код: html 1. 2. 3. 4. 5. 6. Хоть убейте, но не могу понять как мне из этого сделать вот так: Код: html 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 15:00:19
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Gamletus, давай запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 15:09:45
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Вот я немного модифицировал запрос, и во второй половине переименовал i в s и сделал прибавление не по 1, а по 1.1 получился такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. И получился такой результат, который по идее уже можно отсортировать как мне необходимо: Код: html 1. 2. 3. 4. 5. 6. Осталось совсем немного, если итог отсортировать, то по идее будет нужный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 15:28:28
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
ну так что, победил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 15:36:30
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
bochkovну так что, победил? Кажется получилось ))) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Результат такой, какой и требовалось: Код: html 1. 2. 3. 4. 5. 6. Правда сам запрос конечно большой какой-то. Думаю пока записей не много, скорость вроде нормальная. bochkov , огромное вам спасибо за помощь, очень выручили ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.07.2015, 23:50:32
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
ну это вы загнули малёк вместо Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. можно просто Код: sql 1. 2. 3. 4. 5. 6. 7. даже больше скажу при юнионе даже если селекты без скобок(последний главное тут) то ордер бай и лимит будет относиться ко всему юниону всёравно(- если память не изменяет, так в доке написано) а насчёт сортировки на основании счётчиков а если будут первые 11??? или другое число больше равно 10:) есть два набора, как вывести их первые оба, вторые оба, третьи оба.... в вашем случае, можно просто два независимых счётчика и сортировать сначала по номеру, потом по второму полю, которое для каждого селекта в юнионе константа и определяет порядок в выводе(у первого 1 скажем у второго 2) и не надо мастерить велосипеды с овальными колёсами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.07.2015, 01:01:36
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
alex564657498765453ну это вы загнули малёк можно просто Код: sql 1. 2. 3. 4. 5. 6. 7. Да, действительно работает. Спасибо. alex564657498765453есть два набора, как вывести их первые оба, вторые оба, третьи оба.... в вашем случае, можно просто два независимых счётчика и сортировать сначала по номеру, потом по второму полю, которое для каждого селекта в юнионе константа и определяет порядок в выводе(у первого 1 скажем у второго 2) и не надо мастерить велосипеды с овальными колёсами... Честно говорю - у меня очень плохо с запросами, поэтому и обратился на этот сайт. По вашему объяснению я мало чего понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.07.2015, 07:29:09
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Gamletusalex564657498765453ну это вы загнули малёк можно просто Код: sql 1. 2. 3. 4. 5. 6. 7. Да, действительно работает. Спасибо. alex564657498765453есть два набора, как вывести их первые оба, вторые оба, третьи оба.... в вашем случае, можно просто два независимых счётчика и сортировать сначала по номеру, потом по второму полю, которое для каждого селекта в юнионе константа и определяет порядок в выводе(у первого 1 скажем у второго 2) и не надо мастерить велосипеды с овальными колёсами... Честно говорю - у меня очень плохо с запросами, поэтому и обратился на этот сайт. По вашему объяснению я мало чего понимаю. вместо @i:=@i+1 @s:=@s+1.1 что не сработает при лимите больше 10, взять @i:=@i+1,1 @s:=@s+1,2 два поля...одно счётчик, другое константа, но для первого селекта равно еденице, для второго 2. получите 1,1,.... 2,1,.... 3,1,.... 1,2,.... 2,2,.... 3,2,.... и потом сортируете по первому и вторым полям... и получиться тоже самое...только сдесь более надёжный код, а ваш с +1.1 - дерижится на чесном слове. завтра забудете что нельзя лимит 10 и больше использовать и накроется всё медным тазом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.07.2015, 12:48:39
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
alex564657498765453и потом сортируете по первому и вторым полям... и получиться тоже самое...только сдесь более надёжный код, а ваш с +1.1 - дерижится на чесном слове. завтра забудете что нельзя лимит 10 и больше использовать и накроется всё медным тазомЛимит 10 не будет - это точно, но поправил на всякий случай. А как упростить/оптимиировать весь этот запрос не теряя его назначение? Сейчас он работает как надо, но мне кажется можно сделать его попроще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.07.2015, 09:22:49
|
|||
|---|---|---|---|
|
|||
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
Gamletusalex564657498765453и потом сортируете по первому и вторым полям... и получиться тоже самое...только сдесь более надёжный код, а ваш с +1.1 - дерижится на чесном слове. завтра забудете что нельзя лимит 10 и больше использовать и накроется всё медным тазомЛимит 10 не будет - это точно, но поправил на всякий случай. А как упростить/оптимиировать весь этот запрос не теряя его назначение? Сейчас он работает как надо, но мне кажется можно сделать его попроще. да мне тоже кажеться на вскидку неоптимально select * FROM (select .. from THETABLE join (select from THETABLE ... group by) grpoup by) чтото мне подсказывает что сдесь одним селектом можно обойтись, максимум два... ну никак не три ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.07.2015, 10:18:56
|
|||
|---|---|---|---|
Два запроса в одну таблицу с поочерёдным выводом |
|||
|
#18+
alex564657498765453даже больше скажу при юнионе даже если селекты без скобок(последний главное тут) то ордер бай и лимит будет относиться ко всему юниону всёравно(- если память не изменяет, так в доке написано) Скобки нужны только в случае, если необходимо лимитировать (и, скорее всего, ещё и сортировать) частные запросы по отдельности. Просто потому что после LIMIT не может быть UNION чисто синтаксически (error 1221). Однако если хотя бы один из непоследних в запросе частных запросов обрамлён скобками и содержит LIMIT и/или ORDER BY, то отсутствие скобок вокруг последнего субзапроса приведёт к error 1064. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1832977]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
61ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 324ms |

| 0 / 0 |
