
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Привет.
Не могу понять, как подступиться: есть такая вот таблица: ![]() индексы есть по каждому полю Можно ли сделать одним запросом, чтоб вытащить все id0 у первых строк у которых id2=0 и одинаковые id1, как только у строки id1 стал другой, то стоп запрос, типа LIMIT. Представляю вот, как сдеать двумя запросам: 1. $sql1 = mysql::result("SELECT `id1` FROM `tab` WHERE `id2`='0' LIMIT 1"); А есть ли возможность не городить это и не делать GROUP BY? Чтоб запрос был простой и быстрый. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
|||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
А чем тебе он не нравится? ![]() И еще. Я не понял, что ты хочешь получить в итоге. Те строки, что выделены желтым на картинке? Тогда еще условия нужны. PS. И в каком виде ты их хочешь получить? Это сообщение отредактировал sergeiss - 24.01.2014 - 14:08 -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||
![]() |
۩
Дата
|
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
sergeiss
Хочу получить числа 21 и 45 -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
несколько миллонов строк там -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
|||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Возможно, вот твой запрос, хотя и не буду утверждать на 100%, что я правильно понял, что ты хочешь получить: SELECT `id0` FROM `tab` WHERE `id1`= (SELECT `id1` FROM `tab` WHERE `id2`=0 LIMIT 1) PS. А ЗАЧЕМ целые числа в кавычки заключать??? PPS.
Условие "рулит", позволяя выделить только те строки для группировки, что соответствуют условию. Это сообщение отредактировал sergeiss - 24.01.2014 - 14:10 -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
|
![]() |
|
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Winston, эка ты завернул... В "моем" запросе достаточно в начале заменить `id` на * и всё будет
![]() -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
![]() |
۩
Дата
|
||||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
В mysql нету же break; ![]() Чтоб начать считывать строчки и с первой строкой ввести переменную, как только она изменится т.е. поменяется id1 делаем break; Короче, видимо просто так не замутить.
sergeiss ну да...те же два запроса.
Кавычки...да как-то привык и где-то читал, что вроде интерпретатору MySQL легче так запрос читать. Winston Да! Спасибо тоже...похожее решение. Пока перебирал таблицу нашел место где можно изменить логику и в итоге все изменилось. Спасибо еще раз, что откликнулись. -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||||
![]() |
|||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Нет, это один запрос. Сложный. Впрочем, давай "договоримся о терминах" ![]() Хотя ты прав, формально, тут одни и те же данные запрашиваются. Но время выполнения будет разное. -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
Нуу не на мнооого....не преувеличивайТЕ ![]() -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
|||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Думаешь? Не хочу расписывать подробно... Но оцени сам: кроме собственно выполнения запроса, время еще уходит на то, чтобы переслать запрос и затем отправить обратно ответ. Подготовка запроса происходит дважды. Обработка данных в ПХП тоже требует время на выполнение. В итоге 2 запроса реально будут работать дольше, несмотря на то, что итоговые данные будут теми же. -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||
![]() |
۩
Дата
|
||
![]() ![]() TERRAFORMING ENGINEER ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: ★ЛжеЭксперт★ ![]() Сообщений: 3900 Пользователь №: 21196 На форуме: Карма: 88 ![]() |
реально, но в этом масштабе совсем немного, mysql также нужно будет тратить время на сооружение вложенного запроса - во первых. Во вторых - если говорить, откровенно я пример написал специально расписав в два запроса, чтоб показать смысл, если б я выбрал этот способ скорее всего я бы и так сделал его в два запроса. Однако, чтоб не обижать ни тебя, ни Winston`а я тактично не стал писать: что-то типа "Да это тоже самое". Потому, что я уважаю чужой труд и уделенное мне время. Ты отличный специалист и это факт, который вряд ли кто-то будет оспаривать на форуме, но как мне, кажется и тебе стоит быть немного тактичней и не давить лишний раз на собеседника пытаясь поставить его в неловкое положение, доказывая очевидные вещи. Еще раз спасибо. ![]() -------------------- Не тот велик, кто не падал, а тот кто падал и поднимался.
|
||
![]() |
|||||
![]() ![]() Сидел он, дум великих полон - и вдаль глядел ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 15860 Пользователь №: 4190 На форуме: Карма: 490 ![]() |
Хорошо, уговорил ![]() из этих "немного" может сложиться весьма заметное время, когда запросов на сервере будет много от разных юзеров ![]() -------------------- * Хэлп по PHP
* Описалово по JavaScript * Хэлп и СУБД для PostgreSQL * Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. * "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С) ![]() |
||||
![]() |
![]() ![]() ![]() |