sergeiss
20.02.2014 - 14:07
Когда говорят что-то об условиях, типа таких,
Цитата (ABC @ 20.02.2014 - 12:02) |
`tab2`.`id2`=6 и `tab2`.`id2`=7 |
то обычно подразумевается, что данные относятся к одной строке. Потому и говорю, что логика нарушена.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата |
то обычно подразумевается, что данные относятся к одной строке. Потому и говорю, что логика нарушена. |
В чем она нарушена? Кто это сказал?
Цитата |
`tab2`.`id2`=6 и `tab2`.`id2`=7 |
Это два диапазона строк одного столбца. Я поражаюсь просто, человек знать не зная чужую БД сидит и рассуждает о том, чего не знает.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Valick
20.02.2014 - 14:26
ABC, не кипишуй

без группировки она действительно была бы нарушена, и не в самой таблице, а в строке `tab2`.`id2`=6 и (тобишь AND) `tab2`.`id2`=7
_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
20.02.2014 - 14:40
Цитата (ABC @ 20.02.2014 - 14:18) |
Я поражаюсь просто, человек знать не зная чужую БД сидит и рассуждает о том, чего не знает. |
Меня другое поражает... Человеку говорят, КАК ВОСПРИНИМАЮТСЯ его слова. И вместо того, чтобы перефразировать, объяснить, он начинает "бухтеть"...
Цитата (ABC @ 20.02.2014 - 14:18) |
`tab2`.`id2`=6 и `tab2`.`id2`=7
Это два диапазона строк одного столбца. |
Элементарная логика "подсказывает", что должно было быть сказано "это" ИЛИ "это". Никаких "И" тут быть не может. Именно потому, что условия, записанные при создании запроса в WHERE относятся только данным в одной строке.
Я это к чему... Если хочешь получить ответы на вопросы, то учись задавать эти вопросы. И если кто-то уточняет что-то по твоему вопросу, то ты ответь, а не шуми. Потому что иначе тебе отвечают не на твой вопрос, а на тот, который они увидели.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Я не понимаю в чем может быть нарушение даже без группировки.
Разве:
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 нельзя.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeissНу извини... если ты так понял

я И/ИЛИ имел ввиду вообще для результатов, а не конкртено взятой строки
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Цитата |
только при UNION сделать ORDER BY нельзя. |
по количеству сопадений я имею ввиду `count`
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
...как бы да логика неправильная если без ORDER BY
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
20.02.2014 - 15:03
Цитата (ABC @ 20.02.2014 - 14:43) |
только при UNION сделать ORDER BY нельзя |
Кто тебе сказал, что нельзя? Поднимись на уровень выше, глянь на свой запрос "сверху"... Ну, то есть, сделай этот запрос подзапросом.
select *
from
(
тут твой запрос с UNION
) ini_sel
order by ...
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата |
Кто тебе сказал, что нельзя? Поднимись на уровень выше, глянь на свой запрос "сверху"... Ну, то есть, сделай этот запрос подзапросом. select * from ( тут твой запрос с UNION ) ini_sel order by ...
|
Но мне нужна сортировка по количеству совпадений...Там где 2 совпадения для строки выше тех у кого 1.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
20.02.2014 - 15:59
Цитата (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, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Дак тоже самое все... Только N-почти одинаковых запросов вместо 1. Зачем эти велосипеды, когда есть простое решение? Я и так знаю, что ты шаришь...не надо Сергеич, лишнее...
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
20.02.2014 - 16:25
Если ты знаешь простое решение, то зачем спрашивал вообще? А мои предыдущие 2 ответа были "в защиту" UNION

Но если тебе не нужно никаких вариантов решений, то хорошо, я "ухожу из темы".
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Хотя есть здравое зерно....извиняюсь....можно же ведь действительно сделать несколько запросов хотя...короче буду думать еще.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Да я понял.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.