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

start [/forum/topic.php?fid=47&msg=38999573&tid=1832977]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 338ms |

| 0 / 0 |
