[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: GROUP BY + ORDER BY по условию, да/нет
Страницы: 1, 2, 3
sergeiss
Когда говорят что-то об условиях, типа таких,
Цитата (ABC @ 20.02.2014 - 12:02)
`tab2`.`id2`=6 и `tab2`.`id2`=7

то обычно подразумевается, что данные относятся к одной строке. Потому и говорю, что логика нарушена.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Цитата
то обычно подразумевается, что данные относятся к одной строке. Потому и говорю, что логика нарушена.


В чем она нарушена? Кто это сказал?
Цитата
`tab2`.`id2`=6 и `tab2`.`id2`=7

Это два диапазона строк одного столбца. Я поражаюсь просто, человек знать не зная чужую БД сидит и рассуждает о том, чего не знает.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Valick
ABC, не кипишуй smile.gif без группировки она действительно была бы нарушена, и не в самой таблице, а в строке `tab2`.`id2`=6 и (тобишь AND) `tab2`.`id2`=7


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Цитата (ABC @ 20.02.2014 - 14:18)
Я поражаюсь просто, человек знать не зная чужую БД сидит и рассуждает о том, чего не знает.

Меня другое поражает... Человеку говорят, КАК ВОСПРИНИМАЮТСЯ его слова. И вместо того, чтобы перефразировать, объяснить, он начинает "бухтеть"...

Цитата (ABC @ 20.02.2014 - 14:18)
`tab2`.`id2`=6 и `tab2`.`id2`=7

Это два диапазона строк одного столбца.

Элементарная логика "подсказывает", что должно было быть сказано "это" ИЛИ "это". Никаких "И" тут быть не может. Именно потому, что условия, записанные при создании запроса в WHERE относятся только данным в одной строке.

Я это к чему... Если хочешь получить ответы на вопросы, то учись задавать эти вопросы. И если кто-то уточняет что-то по твоему вопросу, то ты ответь, а не шуми. Потому что иначе тебе отвечают не на твой вопрос, а на тот, который они увидели.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Я не понимаю в чем может быть нарушение даже без группировки.

Разве:
SELECT `tab`.`id`
FROM `tab`,`tab2`
WHERE `tab2`.`id2` IN ('6','7')
AND `tab2`.`id3`='5'
AND `tab2`.`id4`=`tab`.`id`

не ПОЧТИ равносильно:
SELECT `tab`.`id`
FROM `tab`,`tab2`
WHERE `tab2`.`id2`=6
AND `tab2`.`id3`='5'
AND `tab2`.`id4`=`tab`.`id`
UNION
SELECT
`tab`.`id`
FROM `tab`,`tab2`
WHERE `tab2`.`id2`=7
AND `tab2`.`id3`='5'
AND `tab2`.`id4`=`tab`.`id`

Все тоже самое...UNION убил одинаковые, только при UNION сделать ORDER BY нельзя.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
sergeiss
Ну извини... если ты так понял smile.gif я И/ИЛИ имел ввиду вообще для результатов, а не конкртено взятой строки

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Цитата
только при UNION сделать ORDER BY нельзя.


по количеству сопадений я имею ввиду `count`

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
...как бы да логика неправильная если без ORDER BY

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
Цитата (ABC @ 20.02.2014 - 14:43)
только при UNION сделать ORDER BY нельзя

Кто тебе сказал, что нельзя? Поднимись на уровень выше, глянь на свой запрос "сверху"... Ну, то есть, сделай этот запрос подзапросом.
select *
from
(
тут твой запрос с UNION
) ini_sel
order by ...


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Цитата
Кто тебе сказал, что нельзя? Поднимись на уровень выше, глянь на свой запрос "сверху"... Ну, то есть, сделай этот запрос подзапросом.
select *
from
(
тут твой запрос с UNION
) ini_sel
order by ...



Но мне нужна сортировка по количеству совпадений...Там где 2 совпадения для строки выше тех у кого 1.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
Цитата (ABC @ 20.02.2014 - 15:08)
Но мне нужна сортировка по количеству совпадений...Там где 2 совпадения для строки выше тех у кого 1

Тоже не вижу проблем. Вижу как минимум 2 варианта:
1. Делаешь UNION ALL, т.е. все строки, даже дублированные, попадают в выборку.
2. Добавляешь в выбираемые поля `tab2`.`id2`, тогда уникальности строк не будет, можно использовать просто UNION.

select *
from
(
тут твой запрос с UNION ALL или с полем `tab2`.`id2`
) ini_sel
group by ...
order by ...



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Дак тоже самое все... Только N-почти одинаковых запросов вместо 1. Зачем эти велосипеды, когда есть простое решение? Я и так знаю, что ты шаришь...не надо Сергеич, лишнее... smile.gif

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
Если ты знаешь простое решение, то зачем спрашивал вообще? А мои предыдущие 2 ответа были "в защиту" UNION smile.gif

Но если тебе не нужно никаких вариантов решений, то хорошо, я "ухожу из темы".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
GET
Хотя есть здравое зерно....извиняюсь....можно же ведь действительно сделать несколько запросов хотя...короче буду думать еще.


_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Да я понял.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.